SlideShare a Scribd company logo
1 of 85
Download to read offline
ARCHITECTURE
FOR
iOS APPs
SUNGCHEOL KIM
Burt.K
skyfe79@gmail.com
http://github.com/skyfe79
http://blog.burt.pe.kr
설계도 유출
문제가 되는 쪽은?
하드웨어 소프트웨어
? ?
하드웨어 설계도
• 유출되면 큰일이다.
• 왜?
소프트웨어 설계도
• 유출되면 큰일이다.
• 글쎄?
• 설계도가 있어도 설계도를 구성하는 각 컴포넌트들을 다
시 작성해야 하기 때문에 시간이 걸리거나 컴포넌트 재작
에 필요한 도메인 지식이 없을 경우 불가능할 수도 있다
소프트웨어 소스코드
• 유출되면 큰일이다?
• 만약 모듈간에 Dependency가 아주 강한 소스코드라면?
• 글쎄?
• 소스코드 전체를 그대로 빌드해서 복사하는 수준이 아니
라면 소스코드를 변경하거나 일부 모듈을 재사용하는 것
이 어려워 시간 비용이 커진다.
Dependency
문제는!
A B
A가 B에 의존할 때, A는 무엇을 하기 위해서 반드시 B가 필요한 것
Dependency
지금까지의 얘기의 결론은?
하드웨어는
인수인계가 쉽다.
소프트웨어는
인수인계가 어렵다.
소프트웨어 설계 철학 중
한 축은?
디펜던시를 줄이자!
(가능하면 제거하자)
왜?
사람이 코드를 작성하니깐
사람은 영원하지 않다.
언젠가는 떠나고
언젠가는 죽는다.
즉, 언젠가는
누군가가 대신해서 코드를
관리해야 한다.
Dependency가 강한 코드
를 교체하려 한다면?
교체 하기가 힘들다.
부수효과로 인해
불가능할 수도 있다.
이런 경우
책A
(김성철)
책B
(김성철)
책B
(김성철)
책B
(김성철)
책B
(김성철)
김성철
김성철을 홍길동으로
변경해야 하는경우
A,B,C,D,E 모두 수정해야 한다
홍길동
이렇게 하면?
책A
(사원A)
책B
(사원A)
책B
(사원A)
책B
(사원A)
책B
(사원A)
사원A
김성철을 홍길동으로
변경해야 하는경우
말그대로 김성철을 홍길동으로
변경하면 된다.
홍길동김성철
강력한 Dependency 사이에
레이어를 두면 dependency
가 약해진다!
MVC
Model - View - Controller
Massive View Controller
Massive View Controller
• Delegate
• Callback
• View Decoration
• Firing Request REST API
• DB CRUD
• …
왜?
• Model-View-Controller간에 dependency가 너무 강하
기 때문이다.
• Model은 변경이 자주 일어 나지 않는다. -> 재사용가능
• View도 변경이 자주 일어 나지 않는다. -> 재사용가능
• Controller는 변경이 자주 일어 난다 -> 그러나 Massive
View Controller로 재사용 불가능
기획서, 디자인, 추가기능
등등의 변경사항
컨트롤러의 변경이 가장
많다.
레이어를 만들자!
MVVM
MVVM
View
(ViewController,
View)
ViewModel Model
뷰(VC,V)와 모델간에 레이어
(VM)를 두어 Massive View
Controller 가 되는 것을 막자
좋은점
V VM M
1. 테스트 코드를 작성하기 편하다.
2. VM과 M은 변경이 자주 일어 나지 않아 재사용성이 높다
3. V는 변경이 자주 일어나지만 Dependency와 책임이 약해

쉽게 변경 가능하다.
4. Rx와 찰떡궁합니다.
V
1. 뷰를 꾸미고 레이아웃 하는 것만 책임지면 된다.
2. 모델이 등장하지 않는다.
1. 단, iOS의 TableView나 CollectionView에서는 

모델이 등장할 수 있다. 

왜? DataSource가 model을 cell-view로 전환해주는 

Adapter이기 때문이다.
M
1. 말 그대로 모델, 데이터 필드의 모임
VM
1. Firing API Request
2. Callback
3. Firing DB CRUD
Rx
1.Control Flow -> Data Flow
2.Asynchronous operations and
event/data streams
Rx-MVVM
V VM M
Binding Observable
VM은 비동기 데이터 스트림으로 M을 다룬다.
바인딩을 통해 M이 변경되거나 VM의 액션이 일어나면
V가 자동으로 변경되도록 한다.
즉, 프로그래머는 V에서 데이터, 이벤트 흐름에 대해 플로우를
설계하면 그만이다!
실제 적용 사례
http://github.com/skyfe79/
RxGitSearch
iOS App에 등장하는
또 하나의 강력한
Dependency!
Navigation
Android VS iOS
Activity
process
Activity
process
Activity
process
TASK
VC VC VC
PROCESS
Android
• 화면 네비게이션이 기본으로 IPC에 기반을 두고 있음
• 다른 액티비티의 인스턴스를 현재 액티비티에서 생성할
수 없음
• Intent를 통해서 입력 데이터를 전달함
• 결과를 onActivityResult로 받음
• 액티비티간에 dependency가 아주 약함
iOS
• iOS는 한 프로세스 안에 여러 VC를 가지고 있음
• 같은 메모리를 공유하기 때문에 현재 VC에서 다른 VC의
인스턴스를 생성할 있고 멤버 함수도 호출할 수 있음
• 화면 네비게이션을 위해 VC간에 알아야 하는게 필수임
• 결과는 Delegate로 받아서 델리게이트의 존재도 알아야
함
• 아주 강력한 Dependency가 생김!
Apple의 해법
화면 네비게이션을 위한
Mediator를 두자.
Segue
Segue
• VC간의 네비게이션을 Segue를 통해 VC가 서로 몰라도 네비게이션
이 되게 하자.
• performSegue(“push-segue”)
• 그러나 데이터 주입(Injection)을 해야 할 때 강력한 디펜던시가 생김
• prepareSegue()
• destinationViewController가 무엇인지 알아야 함
• destinationViewController의 인스턴스를 사용해야 함
iOS App에 등장하는
또 하나의 강력한
Dependency!
Delegate
Apple의 해법
Block
Block
• 델리게이트를 통해 역할을 대신 수행하지 말고 Block을
통해서 역할을 주입하라.
• 델리게이트를 사용하지 말고 Block을 사용하여
Dependency를 제거한다.
• Retain Cycle 등에 민감함
우리의 해법
Apple의 전략과 동일하게
Mediator를 두자.
Router
http://user/detail/:userid
->
UserDetailViewController
route(“http://user/detail/1”)
func onButtonClicked() {
}
• Route를 사용하는 VC에서 UserDetailViewController를
모름
• 필요한 데이터는 URL 형식으로 전달함
• 결과를 받을 경우에는? 콜백블럭을 사용
route(“http://user/detail/1”) { result in
// do something with result
// backing route
}
func onButtonClicked() {
}
만약 전달하는 데이터가
Heavy 하면?
Rx + MVVM을 수정하자
https://medium.com/ribot-labs/android-application-
architecture-8b6e34acda65#.gbqrq9oib
Ribot의 경험을 바탕으로
Rx + MVVM을 수정하자
Postoffice or DataCenter
D
A
T
A
C
E
N
T
E
R
GPS
DB
REST
FILE
Observable
Observable
Observable
Observable
D3W
Delegate
Observable
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
URL Route
D
A
T
A
C
E
N
T
E
R
GPS
DB
REST
FILE
Observable
Observable
Observable
Observable
D3W
Delegate
Observable
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
V VM
Binding Ob/Process/Post
URL Route
이것만 재사용 가능!
때에 따라서는 이것도 재사용 가능!
교체가
쉽다!
아
무
런
의
존
성
이
없
다
!
http://github.com/
skyfe79/RxGitSearch
완벽한 실제 적용 사례
VM
func postResultData() {
dataCenter.post(“searchResult”, resultCollection)
}
VC
func viewDidLoad() {
dataCenter.receive(“searchResult”)
.asObservable
.subscribeOnNext { result in
…
}
}
• 델리게이터가 필요없다
• 콜백체인으로 인한 콜백헬에 빠질 일이 없다.
• Dependency가 V-VM, VM-M 에만 존재한다.
• V-VM은 아주 약한 Dependency다
• VC와 VC간에 Dependency가 없다.
요즘 iOS 서비스앱은?
데이터 Flow가 아주 많다.
이벤트 Flow가 아주 많다
때로는 사람의 생명과도
직결되는 앱이다.
앱이 안정적 이어야한다
앱이 변화에 빠르게 대응
해야 한다.
RxMVVM+DataCenter
http://github.com/
skyfe79/RxGitSearch
감사합니다

More Related Content

What's hot

파견맨 와치앱 개발일지
파견맨 와치앱 개발일지파견맨 와치앱 개발일지
파견맨 와치앱 개발일지Jaeeun Lee
 
Vue guide v0.1
Vue guide v0.1Vue guide v0.1
Vue guide v0.1DataUs
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVM[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVMBill Kim
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Sang Seok Lim
 
1.openseminar
1.openseminar1.openseminar
1.openseminarNAVER D2
 

What's hot (9)

파견맨 와치앱 개발일지
파견맨 와치앱 개발일지파견맨 와치앱 개발일지
파견맨 와치앱 개발일지
 
Vue guide v0.1
Vue guide v0.1Vue guide v0.1
Vue guide v0.1
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVM[iOS] MVC, MVP, MVVM
[iOS] MVC, MVP, MVVM
 
1.스프링프레임워크 개요
1.스프링프레임워크 개요1.스프링프레임워크 개요
1.스프링프레임워크 개요
 
Vue.js와 Firebase활용기
Vue.js와 Firebase활용기Vue.js와 Firebase활용기
Vue.js와 Firebase활용기
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
 
deview2014
deview2014deview2014
deview2014
 
1.openseminar
1.openseminar1.openseminar
1.openseminar
 

Viewers also liked

Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streamsmattpodwysocki
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍NAVER D2
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift선협 이
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJSstefanmayer13
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015NAVER / MusicPlatform
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기Jong Wook Kim
 
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015Ben Lesh
 
Reactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwiftReactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwiftFlorent Pillet
 

Viewers also liked (8)

Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
 
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015
 
Reactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwiftReactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwift
 

Similar to Rx for iOS App. RxMVVM-DataCenter!

iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdfssuser86e2971
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Sa-ryong Kang
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가VMware Tanzu Korea
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)DK Lee
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신Sungwoo Choo
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신NAVER D2
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Bansook Nam
 
iOS Modular Architecture with Tuist
iOS Modular Architecture with TuistiOS Modular Architecture with Tuist
iOS Modular Architecture with Tuist정민 안
 
Social game and windows azure platform (final)
Social game and windows azure platform (final)Social game and windows azure platform (final)
Social game and windows azure platform (final)정현 남
 
IoC and DI Pattern
IoC and DI PatternIoC and DI Pattern
IoC and DI PatternSangwon Ko
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)Amazon Web Services Korea
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf병근 손
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 
클라우드 네이티브 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
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술중선 곽
 
Citrine소개서
Citrine소개서Citrine소개서
Citrine소개서logeo
 
SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)Youngbin Han
 

Similar to Rx for iOS App. RxMVVM-DataCenter! (20)

iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdf
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
 
React native development
React native developmentReact native development
React native development
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지
 
iOS Modular Architecture with Tuist
iOS Modular Architecture with TuistiOS Modular Architecture with Tuist
iOS Modular Architecture with Tuist
 
Social game and windows azure platform (final)
Social game and windows azure platform (final)Social game and windows azure platform (final)
Social game and windows azure platform (final)
 
IoC and DI Pattern
IoC and DI PatternIoC and DI Pattern
IoC and DI Pattern
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 
클라우드 네이티브 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
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
Citrine소개서
Citrine소개서Citrine소개서
Citrine소개서
 
SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)SKHUFEEDS 소개 발표자료(노트 포함)
SKHUFEEDS 소개 발표자료(노트 포함)
 

Rx for iOS App. RxMVVM-DataCenter!