38
staccato Android 를 를 를 를를를를를 ? MVVM, MVP 를를 를를를 를 를를 TRACK 1 를를를 BBBTechInc. . . . .

2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

  • Upload
    -

  • View
    147

  • Download
    4

Embed Size (px)

Citation preview

Page 1: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

staccatoAndroid 를 더 잘 개발하려면 ?MVVM, MVP 패턴 그리고 그 너머…

TRACK 1

윤승용 BBBTechInc.

.. ..

Page 2: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)
Page 3: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

핵심 페이지 3-4 페이지 , 드로잉 모듈 , 네트워크 모듈 포함

개발인원 4 명 , 런칭까지 16 개월 이상 소요

Page 4: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

핵심 페이지 8-9 페이지 , 드로잉 모듈 , 이미지 프로세싱 모듈 , 네트워크 모듈 , Notification 모듈 등 포함

개발인원 3 명 , 런칭까지 12 개월 가량 소요

Page 5: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

규모에서 차이가 많이 났지만 , 개발 기간이 더 적게 걸린 여러가지 이유 중가장 큰 이유는 Architecture 패턴을 도입했기 때문이라 생각함

Page 6: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

규모가 큰 프로젝트를 진행할수록 아키텍쳐의 중요도는 높아짐

Page 7: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Good Architecture?

Page 8: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

• Independent•Testable•Reusable•Expandable

Page 9: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

• Independent•Testable•Reusable•Expandable

Page 10: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

First Android

Page 11: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Activity

Event Handler Presentation Logic

Data Business Logic

Flow Control

SketchKit 프로젝트 알파버전 완성 당시에 Drawing Activity 라인은 1500 줄에 육박했음 ..

Page 12: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

MVC Pattern

Page 13: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Model

View

Controller

Event

Data

Business Logic

Event Handler

Presentation Logic

Flow Control

Page 14: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Model

View Controller

Event

Data

Business Logic

Event HandlerPresentation Logic Flow Control

Activity

Page 15: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

MVP Pattern

Page 16: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Model

View

Presenter

Event

Event Handler

Presentation Logic

Data

Business Logic

Flow Control

Page 17: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Model

View

Presenter

Event

Event Handler

Presentation Logic

Data

Business Logic

Flow Control

Activity

Page 18: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

MVVM Pattern

Page 19: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Model

View

ViewModel

Event

Event Handler

Presentation Logic

Data

Business Logic

Flow Control

DataBinding

Page 20: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Model

View

ViewModel

Event

Event Handler

Presentation Logic

Data

Business Logic

Flow Control

ActivityDataBinding

Page 21: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Android DataBinding 라이브러리의 등장으로 MVVM 구현이 수월해졌음Android 2.1(API 레벨 7 이상 ) 까지 Android 플랫폼의 모든 이전 버전에서 사용할 수 있습니다 .

Page 22: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

MVP vs MVVMOn Android

Page 23: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

MVP

Pros• 코드 구조를 이해하기 쉽다• Test 가 상대적으로 더 쉽다• Activity/Fragment 의 역할이 명확하다

Cons• View 와 Presenter 간의 의존성이 높다• 작은 규모의 프로젝트에서는 명백한 OverEngineering

Page 24: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

MVVM

Pros• 구현 속도가 빠르다• 코드 재사용성이 상대적으로 높다• View 와 ViewModel 간의 독립성을 보장

Cons• IDE 의 Data-Binding Library Support 가 더 필요함• 큰 규모로 갈수록 코드가 복잡해지기 쉬움

Page 25: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Clean Architrcture

Page 27: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Android Framework

Presenter

Model

View

External Framework

Repository Pattern

Server API

Database

Usecase

Page 28: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Android Framework

Presenter

Model

View

External Framework

Repository Pattern

Server API

Database

Usecase

파란 테두리 영역의 Independent 를 최대한 보장하는 것이 목표

Page 29: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

http://martinfowler.com/eaaCatalog/repository.html 참고

Page 31: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

http://jakewharton.github.io/butterknife/ 참고

Page 32: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

https://www.youtube.com/watch?v=plK0zyRLIP8 참고

Page 33: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Pros• 코드의 가독성이 훨씬 뛰어남• 핵심 로직에 대한 Test 가 쉬움• 협업이 엄청 수월해짐

Cons• OverEngineering 의 향연• 초기 진입장벽이 높음

Page 34: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

Conclusion

Page 35: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

여전히 Silver Bullet 은 없지만

Page 36: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

We will find a weapon. we always have.

Page 37: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)

[email protected]윤승용 BBBTechInc.

Thank you

Page 38: 2016 Staccato track3 Android를 더 잘 개발하려면? (MVP, MVVM, Clean Architecture)