SlideShare a Scribd company logo
1 of 7
Download to read offline
Clean Architecture
& Flux
Clean architecture
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
● 최근의 소프트웨어 아키텍쳐들
● 여러 아키텍쳐 사이에는 매우 유사한 점들이 있음
○ 프레임워크에 대한 비 의존성
○ 테스트 가능성
○ UI에 대한 비 의존성
○ DB에 대한 비 의존성
○ 다른 어떤한 에이전시에 대한 비 의존성
● 이런 특징들을 하나의 액션 아이디어로 통합을 하려는 노력
Clean Architecture
의존성 방향 - 안쪽으로
● The outer circles are mechanisms.
● The inner circles are policies.
Entity와 Use Cases
● Business Rule
● These use cases orchestrate the
flow of data to and from the entities
Interface Adapter
Frameworks and Drivers.
Crossing boundaries - DIP
Clean Architecture in Android
https://github.com/googlesamples/android-architecture
https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/
● 안드로이드 앱에 여러 패턴을 적용하는 구글 주도 프로젝트
● MVP + Clean Architecture TODO
○ View와 Presenter를 “Contract”로 뽑음
○ Presenter에서 Use Case호출, 결과를 View에 업데이트
○ Use Case에서는 Service 혹은 Repository (Entity 영역)에 접근
Flux
단방향 데이타 흐름
● From Action to View
A Single Dispatcher
Stores
Views and Controller-Views
Actions
Dispatcher를 통한 decouple
ActionCreators
Store에서 View로는 Event
https://facebook.github.io/flux/docs/overview.html#content
Flux - 요상한점
왜 ActionCreator가
WebApi를 사용하지?
1. WebApi 완료후
Action flow를 만들기
위해
2. Store에서 하는 역할을
단순화하기 위해
3. Dispatching
Order때문에
- WaitFor
Flux 와 Angular JS
ActionCreator가 DataSoruce 계층인 API를 사용하는것은 여전히 이상하다.
Controller-Views가 모든 Event를 Handling하지 말고 EventHandler 스러운
Controller를 따로두는것은 안좋은건가? - Error Handling에 더 좋을것 같음.
AngularJS
● Scope을 DI로 해결
● $rootScope에 dispatch를 할수 있는 기능 탑제
● UI Component화 하기 용이
https://github.com/poksion/log-me/tree/master/fyac/public/apps

More Related Content

Similar to Clean architecture and flux

ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)승용 윤
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSAVMware Tanzu Korea
 
세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdfJaesuk Ahn
 
Cadworx water industry proposal
Cadworx water industry proposalCadworx water industry proposal
Cadworx water industry proposalJaeshik SHIN
 
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdfSAMUEL SJ Cheon
 
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...BESPIN GLOBAL
 
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2Daniel Lim
 
01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요Hankyo
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
Agados ABP(Application Building Process) Overview
Agados ABP(Application Building Process) Overview Agados ABP(Application Building Process) Overview
Agados ABP(Application Building Process) Overview Yongkyoo Park
 
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브Atlassian 대한민국
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App DevelopmentChi Hwan Choi
 
DevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabDevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabGuenjun Yoo
 
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...confluent
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
Data discovery qlikview
Data discovery   qlikviewData discovery   qlikview
Data discovery qlikviewchoi3773
 
polyglot application development in the cloud
polyglot application development in the cloudpolyglot application development in the cloud
polyglot application development in the cloudMee Nam Lee
 

Similar to Clean architecture and flux (20)

ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf
 
Cadworx water industry proposal
Cadworx water industry proposalCadworx water industry proposal
Cadworx water industry proposal
 
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
(Enterprise,RedHat) - SDC(IaaS) with SDS, Cloud References 2020-07 Samuel.pdf
 
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
All about Data Center Migration Session 1. <Case Study> 오비맥주 사례로 알아보는 DC 마이그레...
 
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
 
01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
Agados ABP(Application Building Process) Overview
Agados ABP(Application Building Process) Overview Agados ABP(Application Building Process) Overview
Agados ABP(Application Building Process) Overview
 
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
Atlassian을 이용한 애자일 ALM 소개 / JIRA 프로젝트 예산 관리 - 커브
 
bsk_03_01
bsk_03_01bsk_03_01
bsk_03_01
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
 
DevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabDevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLab
 
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
[Confluent] 실시간 하이브리드, 멀티 클라우드 데이터 아키텍처로 빠르게 혀...
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
Data discovery qlikview
Data discovery   qlikviewData discovery   qlikview
Data discovery qlikview
 
polyglot application development in the cloud
polyglot application development in the cloudpolyglot application development in the cloud
polyglot application development in the cloud
 

Clean architecture and flux

  • 2. Clean architecture https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html ● 최근의 소프트웨어 아키텍쳐들 ● 여러 아키텍쳐 사이에는 매우 유사한 점들이 있음 ○ 프레임워크에 대한 비 의존성 ○ 테스트 가능성 ○ UI에 대한 비 의존성 ○ DB에 대한 비 의존성 ○ 다른 어떤한 에이전시에 대한 비 의존성 ● 이런 특징들을 하나의 액션 아이디어로 통합을 하려는 노력
  • 3. Clean Architecture 의존성 방향 - 안쪽으로 ● The outer circles are mechanisms. ● The inner circles are policies. Entity와 Use Cases ● Business Rule ● These use cases orchestrate the flow of data to and from the entities Interface Adapter Frameworks and Drivers. Crossing boundaries - DIP
  • 4. Clean Architecture in Android https://github.com/googlesamples/android-architecture https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/ ● 안드로이드 앱에 여러 패턴을 적용하는 구글 주도 프로젝트 ● MVP + Clean Architecture TODO ○ View와 Presenter를 “Contract”로 뽑음 ○ Presenter에서 Use Case호출, 결과를 View에 업데이트 ○ Use Case에서는 Service 혹은 Repository (Entity 영역)에 접근
  • 5. Flux 단방향 데이타 흐름 ● From Action to View A Single Dispatcher Stores Views and Controller-Views Actions Dispatcher를 통한 decouple ActionCreators Store에서 View로는 Event https://facebook.github.io/flux/docs/overview.html#content
  • 6. Flux - 요상한점 왜 ActionCreator가 WebApi를 사용하지? 1. WebApi 완료후 Action flow를 만들기 위해 2. Store에서 하는 역할을 단순화하기 위해 3. Dispatching Order때문에 - WaitFor
  • 7. Flux 와 Angular JS ActionCreator가 DataSoruce 계층인 API를 사용하는것은 여전히 이상하다. Controller-Views가 모든 Event를 Handling하지 말고 EventHandler 스러운 Controller를 따로두는것은 안좋은건가? - Error Handling에 더 좋을것 같음. AngularJS ● Scope을 DI로 해결 ● $rootScope에 dispatch를 할수 있는 기능 탑제 ● UI Component화 하기 용이 https://github.com/poksion/log-me/tree/master/fyac/public/apps