Learn to share,Share to learn
6월 둘째주 공부 기록서 - 클린 아키텍쳐 완전 정복 본문
6월 9일
상태 관리란? 아키텍쳐를 공부하면서 자주 나오는게 BLOC와 같은 상태 관리 키워드이다. 이것에 대해 공부해야겠다고 느꼈다.
https://sambalim.tistory.com/140
상태 관리에 대해 정리해보자
프로젝트의 규모가 커짐에 따라 관리가 어려워진 상태들이 생겨났고 이를 위해 상태 관리 라이브러리를 사용하고자 합니다. 하지만 다양한 라이브러리 중 어떠한 것을 사용해보는 것이 좋을지
sambalim.tistory.com
간단히 말하자면, 정말 상태를 관리해 주는 역할을 해준다. 상태는 페이지내에서 눈에 보이는 데이터들(ex. 메뉴, 게시글 제목, 게시글 내용)뿐만 아니라 서버와 주고 받아야하는 데이터를 말한다.
이렇게 눈에 보이는 것과 눈에 보이지 않는 모든 것을 상태라고 하고 이를 관리하는 것을 상태 관리라고 하는것이다.
개념은 이해를 했고 BLOC패턴을 사용하며 알아가봐야겠다.
https://blog.codefactory.ai/flutter/equatable/
[Flutter] Equatable 플러그인, 도대체 어디에 쓰는건가요?
서론 안녕하세요 코드팩토리입니다. 오늘은 Equatable 플러그인 사용법에대한 강의를 가져왔어요. 외부 플러그인들을 보거나 튜토리얼을 보면 클래스들이 Equatable…
blog.codefactory.ai
TDD + 클린 아키텍쳐 영어 강의를 들으면서 equatable 플러그인에 대해 알게되었다
6월 10일
https://www.youtube.com/watch?v=s-4BOCx3bNE
아키텍쳐의 필요성과 개념을 잡기에 좋은 동영상이다. TDD를 알아볼수록 복잡하고 적용이 쉽지 않다는게 보인다. 톡방의 어떤분은 플라톤의 이데아 같은 느낌이라고 하시는데 흠.. 확실히 이상적이고 복잡하지만 적용하고 사용할수만 있다면 장기적으로 좋은 부분이 있을것같다. 하지만 프레임워크와 방법론 등은 모두 도구일뿐이다. 닭잡는 칼도 있고 소잡는 칼도 있는데, 아직 내게는 소잡는 칼같이 느껴진다.
https://wooaoe.tistory.com/33 TDD 설명이다. 일단 좀더 고려해보며 패턴에 대해 보고 있는데, 개념을 알겠지만 좀 투머치 하다는 생각도 좀 들고..
https://github.com/ShadyBoukhary/flutter_clean_architecture
ShadyBoukhary/flutter_clean_architecture
Clean architecture flutter: A Flutter package that makes it easy and intuitive to implement Uncle Bob's Clean Architecture in Flutter. This package provides basic classes that are tuned to work...
github.com
클린 아키텍쳐의 리드미를 잘 읽어보면 도움되는 부분이 많다는 조언을 들어 읽어보고있다. 특히 아래 링크와 함께 읽으니 더욱 도움이 된다.
클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 5부 : 아키텍처 (20장)
[20장] 업무 규칙 애플리케이션을 업무 규칙과 플러그인으로 구분하려면 업무 규칙이 실제로 무엇인지를 잘 이해해야만 한다. 업무 규칙은 사업적으로 수익을 얻거나 비용을 줄일 수 있는 규칙
yrok.tistory.com
6월 11일
글에 앞서 클린 아키텍쳐 요약본을 먼저 알아보고 시작하자
https://peter-cho.gitbook.io/book/11/clean-architecture/1
클린 아키텍처 일부 요약
peter-cho.gitbook.io
https://genieker.tistory.com/123를 다시보며 클린아키텍쳐의 개념에대해 다시 생각해 톡방에 질문을 하게되었다. 좋은 대화가 많이 나와 간략하게 정리하고 중략도 하며 작성해보았다. 이해를 위해 Q는 나뿐만 아니라 다른 질문자분들도 모두 포함해 Q로 적고, 문맥에 따라 어느정도 편집을 했다.
Q: 고수님들 질문이 생겨 왔습니다. 클린 아키텍쳐는 프레임워크인가요 아키텍쳐인가요? MVC,MVVM과 같은 디자인 패턴을 이용해 클린 아키텍쳐라는 프레임워크 기법을 지키며 플러그인이라는 컴포넌트들을 사용해서 개발하는거라고 이해하고 있었는데 제 이해가 맞을까요? 아키텍쳐는 이 모든것을 아울러서 아키텍쳐라고 하는걸까요??
A: [김] 클린 아키텍쳐는 아키텍쳐로 보는게 맞는데, 제 생각엔 용어가 좀 기존의 아키텍쳐랑 다르다고 봐요
A: [루] 클린 아키택처는.. 아키텍처입니다. 일단 저자가 아키텍처라고 했으니까요.
그리고 프레임워크는 기법이 아닙니다? 또 플러그인은 아키텍처의 원론과 무관하고 플러터에서 구현상의 요소에 속할 것이라고 추정합니다.
Q: 음.. 그럼 클린 아키텍쳐에서 사용하는 프레임워크는 어떤부분인가요?
A: [루] 프레임워크는 잊어요. 사실 프레임워크도 아키텍처 이상으로 모호한 개념이라서.
그리고 클린아키텍처는 구조에 대한 이론이라서 프레임이 존재하지 않... 지 않아요?
A: [김] 클린아키텍쳐를 따른 프레임워크는 있어도 클린아키텍쳐는 프레임워크가 아니다, 이 말이 적절하지 않을까욤
A: [루] 그러씁니다.
극단적으로 말하면, 클린아키텍처는 재료의 배치와 순서와 방법을 통짜로 설명하는 백선생님 유투브같은거고.
프레임워크는 도구와 재료를 제공하는 밀키트같은건데 굉장히 극단적인 구분이라서. 이걸로 이해하면 안됩니다.
A: [김] 제가 예전에 디자인 패턴이랑 아키텍쳐랑 뭐가 다르냐고 질문 올렸던적이 있었는데 링크를 참고하세요
https://stackoverflow.com/questions/4243187/whats-the-difference-between-design-patterns-and-architectural-patterns
What's the difference between design patterns and architectural patterns?
When we read about design patterns on the internet we note that there are 3 categories: Creational Structural Behavioral But when we create the architecture of a software, then we think about MVP...
stackoverflow.com
A: [김] 그리고 MVC 와 MVVM은 디자인 패턴이 아니예요
Q: 디자인패턴 맞지않나요?
A: [김] 아키텍쳐로 보는게 맞아요, 보내드린 링크보시면..
저는 디자인 패턴을 반복되는 문제 해결에 대한 패턴이라고 보고 아키텍쳐는 소프트웨어의 구조 구성을 이야기 하는건데, MVC 나 MVVM은 소프트웨어 구조 구성을 결정하는거잖아요
그래서 디자인 패턴이 아니라 아키텍쳐로 보는게 맞는다는거죠. 보내드린 링크에서도 MVC는 아키텍쳐 중 하나 라고 이야기 하고 있어요
A: 아키텍쳐는 설계도짜는거고 디자인패턴은 설계도를그릴때 패턴화시킨것?
https://mingrammer.com/translation-10-common-software-architectural-patterns-in-a-nutshell/
[번역] 10가지 소프트웨어 아키텍처 패턴 요약
10 Common Software Architectural Patterns in a nutshell을 번역한 글입니다. 대형 엔터프라이즈 규모의 시스템들은 어떻게 설계되었는지에 대해 궁금해 한 적이 있나요? 우리는 주요 소프트
mingrammer.com
A: 아키텍쳐 = 설계도, 디자인패턴 = 공법 이란 얘기를 어디서 들었습니다.
A: [루] 그리고 디자인패턴과 아키텍처는 포함 불포함을 고려할 이야기가 아니고, MVC 와 MVVM 이 클린아키텍처에 포함되지 않는 개념이라는 것을 아셔야합니다.
그 세 개념은 각각독립적인 개념이니까요.
A: [김] 개념적으론 독립될순 있지만 실제 구현단에서는 섞어서 쓰는게 많아서 헷갈리는 요소가 많은듯해요
A: [루] 그리고 패턴, 디자인패턴, 아키텍처 는 나눠서 다뤄야할 문제고. 아키텍처랑 클린아키텍처도 구분해서 보셔야하는부분이라는거죠.
A: [김] 네 저도 동의합니당ㅎㅎ. 아키텍쳐 패턴 > 디자인 패턴 이거는 일수도 있고 아닐수도 있어서 [루]님 말씀처럼 분리해서 보시는게 맞는듯해요
Q: 아키텍처와 클린 아키텍처도 구분해서 보아야 하는 이유가 잘 이해가 안갑니다 ㅠㅠ
A: [루] 아키텍쳐의 종류 중 하나가 클린 아키텍쳐라는 말입니다.
구분안하다 보면 클린아키텍처를 말하면서 아키텍처에 대한 이야기를 하고 아키텍처라고 쓸 위치에 클린아키텍처를 쓰게 되면 대화가 산으로 가거든요.
Q: 그럼 아키텍쳐 종류 중에 디자인 패턴이 있는게 아니라, 아키텍쳐가 디자인 패턴보다 상위의 개념 이라시는거죠? 개념상으로!
A: [루] 예 대충 그렇게 생각하고 있어요.
중요 부분만 요약해보자면, 클린 아키텍쳐는 상위 개념의 아키텍쳐이고, 하위의 개념으로 디자인 패턴이 있는것이다. MVC와 MVVM은 개념,정의적인 부분으로 보면 아키텍쳐라고 할수 있다. 상세 내용은 위를 한번 읽어보면 좋겠다.
클린 아키텍쳐를 공부하다보니, 그 내부의 규칙들에 대해서도 알게되었다.
클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 3부 : 설계 원칙
좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다. 좋은 벽돌로 좋은 아키텍처를 정의하는 원칙이 필요한데, 그게 바로 SOLID다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법,
yrok.tistory.com
위에도 적었던 블로그인데, 글들을 모두 읽어보면 좋을것같다. 이중에서도 설계원칙에 대해 공부하고 있다. 좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다. 좋은 벽돌로 좋은 아키텍처를 정의하는 원칙이 필요한데, 그게 바로 SOLID다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 이들 클래스를 서로 결합하는 방법을 설명해준다. 여기에서 클래스는 단순히 함수와 데이터를 결합한 집합을 가리킨다.
SOLID 원칙의 목적은 중간 수준의 소프트웨어 구조가 아래와 같도록 만드는 데 있다.
-변경에 유연하다.
-이해하기 쉽다.
-컴포넌트의 기반이 된다.
‘중간 수준’이라 함은 프로그래머가 이들 원칙을 모듈 수준에서 작업할 때 적용할 수 있다는 뜻이다.
https://dev-momo.tistory.com/entry/SOLID-%EC%9B%90%EC%B9%99
SOLID 원칙
프로그래밍 설계를 하다보면 객체지향 5대원칙 또는 SOLID 원칙이란 단어를 들어본 적이 있을 것이다. 당시에 구글링을 하여 찾아보았지만 프로그래밍 내공이 부족하여 잘 이해가 되지 않았다.
dev-momo.tistory.com
전통적인 MVC,MVVM,MVP에 대해서도 공부했는데, 내가 실무에서 겪은 방법과는 조금 차이가 있었다. 하지만 일단 클린 아키텍쳐에 대해서는 감을 잡았다.
'Flutter > 주간별 공부 기록서' 카테고리의 다른 글
6월 넷째주 개발 기록서 (0) | 2021.06.22 |
---|---|
6월 셋째주 공부 기록서 (0) | 2021.06.14 |
6월 첫째주 공부 기록서 (0) | 2021.06.02 |
5월 넷째주 공부기록서 - 프레임 워크와 프로젝트 준비 (0) | 2021.05.24 |
5월 셋째주 공부 기록서 - DFS,BFS (0) | 2021.05.20 |