SlideShare a Scribd company logo
한국카카오은행안정민
MVC, MVVM, ReactorKit, VIPER를
거쳐 RIB 정착기
Architecture 이야기
• 現 한국카카오은행 iOS 개발자 (16.10 ~ )
• 블로그 운영 : minsone.github.io
소개
• 기존 아키텍처에 왜 만족 못했는가?
• RIBs 아키텍처 도입까지 과정
• RIBs 아키텍처를 선택할 수 밖에 없었던 이유
• 기존 프로젝트를 RIBs로 바꿀 수 있을까?
• QnA
목차
기존 아키텍처에
왜 만족 못했는가?
MVC
MVVM
MVP
ReactorKit
VIPER
Flux
Clean
Architecture
RIBs
MVVM-
C
코드 표준화
재사용성
비즈니스
로직 단
순화
명확한
코드 위
치
테스트코
드
격리
화
수정 용이
함
기존 아키텍처에 왜 만족 못했
는가?
• 기존 기능 수정 및 확장 어려움
• 화면 단위가 아닌 프로세스 단위로 유연한 개
발 필요
• 더 확실한 안정화 필요
기존 아키텍처에 왜 만족 못했
는가?
• 기존 기능 수정 및 확장 어려움
• Swift 2버전부터 개발로 당시 Swift 이해도 낮음
• 당시 아키텍처의 표준화된 틀이 없음.
• 유연하지 않은 설계로 인한 기능 확장의 어려움.
• 16년 10월 : 3명 -> 19년 10월 16명
기존 아키텍처에 왜 만족 못했
는가?
• 기존 기능 수정 및 확장 어려움
• 화면 단위가 아닌 프로세스 단위로 유연한 개
발 필요
• 더 확실한 안정화 필요
기존 아키텍처에 왜 만족 못했
는가?
• 화면 단위가 아닌 프로세스 단위로 유연한 개발
필요
• Viewless 아키텍처가 필요.
• 자체 아키텍처 제작
• ReactorKit, Redux, Coordinator 등 아키텍처 참고
• 한 곳에서 많은 로직을 처리하게 코드가 변질됨.
• 재사용 어렵고, 새로운 비즈니스 로직을 넣기 어려움.
• 자체 제작 아키텍처의 유지보수 어려움.
기존 아키텍처에 왜 만족 못했
는가?
• 기존 기능 수정 및 확장 어려움
• 화면 단위가 아닌 프로세스 단위로 유연한 개
발 필요
• 더 확실한 안정화 필요
기존 아키텍처에 왜 만족 못했
는가?
• 더 확실한 안정화 필요
• 앞의 이유로 인한 테스트 코드 작성 시늉도 어려움
.
• 바쁘다는 핑계로 테스트를 제대로 못했던 문제
• 테스트 코드 템플릿 또는 가이드가 있는 아키텍처
가 거의 없음.
• 체계화된 테스트 코드 작성 방식이 필요
RIBs 도입까지
아키텍처 여정
적용했던 아키텍처 여정
• MV(C)
• MVVM
• ReactorKit
• VIPER
적용했던 아키텍처 여정
• MV(C)
• MVVM
• ReactorKit
• VIPER
적용했던 아키텍처 여정 -
MV(C)
출처 : developer.apple.com
적용했던 아키텍처 여정 -
MV(C)
• 장점
• 기존에 익숙하던 구조
• 비즈니스 로직이 거의 없는 단순한 화면에만 적용
• 단점
• 화면의 기능이 확장되면 코드가 잘 정리되지 않고
깔끔하게 작성하기 쉽지 않음.
적용했던 아키텍처 여정
• MV(C)
• MVVM
• ReactorKit
• VIPER
적용했던 아키텍처 여정 -
MVVM
출처 : Medium - iOS Architecture Patterns
적용했던 아키텍처 여정 -
MVVM
• 장점
• MVC보다는 코드가 정리되는 느낌적인 느낌
• 단점
• 복잡해질수록 ViewModel이 빠르게 비대해짐.
• 표준화된 틀이 존재하지 않아 사람마다 이해가 다름.
• 테스트 코드 작성이 가능하면서도 어려움.
• Rx의 허들 및 디버깅
적용했던 아키텍처 여정
• MV(C)
• MVVM
• ReactorKit
• VIPER
출처 : Github - ReactorKit
적용했던 아키텍처 여정 - ReactorK
• 장점
• 상태가 단방향으로 정리되어 View와 관계된 로직
이 깔끔함.
• 저자가 전수열님 - 언제든지 한국어로 물어볼 수
있음.
• 단점
• 프로세스 단위의 아키텍처가 아니라서 아쉬움.
적용했던 아키텍처 여정 - ReactorK
적용했던 아키텍처 여정
• MV(C)
• MVVM
• ReactorKit
• VIPER
적용했던 아키텍처 여정 - VIPER
출처 : Medium - iOS Architecture Patterns
적용했던 아키텍처 여정 - VIPER
• 장점
• V, I, P, E, R 역할이 명확하게 구분됨.
• 단점
• VIPER 아키텍처 설계가 여러 곳으로 난립함.
• 명확한 가이드, 테스트 코드 템플릿이 제대로 갖춰
지고 유지보수 되는 곳이 없음.
RIBs 아키텍처를 선택
할 수 밖에 없었던 이유
RIBs Architecture
출처 : Github - RIBs
Related Sessions
• RxRIBs, Multiplatform architecture with Rx Session Let’Swift 2018
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• (강제)프로토콜 지향 프로그래밍
• 의존성 주입 DI
• Viewless RIB을 통한 비즈니스 로직 정리
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
O Own corresponding view
O Adds Storyboard file
O Own corresponding view
X Adds Storyboard file
X Own corresponding view
X Adds Storyboard file
O Own corresponding view
O Adds Storyboard file
O Own corresponding view
X Adds Storyboard file
X Own corresponding view
X Adds Storyboard file
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• 기본적인 테스트 코드 추가
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• 기본적인 테스트 코드 추가
• 테스트 관련 Mock 샘플 파일이 Tutorial2에서 제공
Tutorial2/TicTacToeTests/TicTacToeMocks.swift
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• 기본적인 테스트 코드 추가
• 테스트 관련 Mock 샘플 파일이 Tutorial2에서 제공
• RIB 파일을 SourceKitten을 이용해 분석하여 Mock
코드 생성 스크립트 작성
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• (강제)프로토콜 지향 프로그래밍
• 의존성 주입 DI
• Viewless RIB을 통한 비즈니스 로직 정리
Router Interactor
View
Routing
Interactable
Interact
or
Router Interactor
View
Routing
Interactable
Router
Router Interactor
View
Routing
Interactable
View
Router Interactor
View
Routing
Interactable
Router
Interact
or
View
Router
Interact
or
Child RIB
Parent RIB
Rx Observable Listener
Router
Interact
or
View
Router
Interact
or
Child RIB
Parent RIB
Rx Observable Listener
Router
Interact
or
View
Router
Interact
or
Router
Interact
or
Router
Interact
or
View
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• (강제)프로토콜 지향 프로그래밍
• 의존성 주입 DI
• Viewless RIB을 통한 비즈니스 로직 정리
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 의존성 주입 DI
• 해당 RIB에서 필요한 속성을 Dependency에 정의.
Dependency 확장
name, nickName 필요
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 의존성 주입 DI
• 해당 RIB에서 필요한 속성을 Dependency에 정의.
• Dependency에 정의된 요소들을 구현 필요.
• Dependency가 확장되면 컴파일 에러 발생
• 해당 RIB을 사용하는 곳은 모든 곳에서 다 작성해
야 함.
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• 템플릿화된 코드 및 테스트 작성
• (강제)프로토콜 지향 프로그래밍
• 의존성 주입 DI
• Viewless RIB을 통한 비즈니스 로직 정리
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
• Viewless RIB을 통한 비즈니스 로직 정리
• 복잡한 로직을 작은 단위의 RIB을 엮어 만듬.
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
개설 가
능
대상자
조회
예금 개
설
시작
개설 가
능
상품 여
부
조회
상품 소
개
거래 제
한
해제
약관 목
록
예금 신
청서
작성
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
개설 가
능
대상자
조회
예금 개
설
시작
거래 제
한
해제
개설 가
능
상품 여
부
조회
상품 소
개
약관 목
록
예금 신
청서
작성
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
개설 가
능
대상자
조회
예금 개
설
시작
개설 가
능
상품 여
부
조회
상품 소
개
거래 제
한
해제
약관 목
록
예금 신
청서
작성
RIBs 아키텍처를 선택할 수 밖에 없었던
이유
개설 가
능
대상자
조회
예금 개
설
시작
개설 가
능
상품 여
부
조회
상품 소
개
거래 제
한
해제
약관 목
록
예금 신
청서
작성
기존 프로젝트를 RIBs
로 바꿀 수 있을까?
가능합니다.
지금 바꾸고 있으니까요.
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• 신규 화면 또는 비즈니스 로직을 RIB으로 변경
• Packaging
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• 신규 화면 또는 비즈니스 로직을 RIB으로 변경
• 비즈니스 로직만 처리하는 RIB을 호출하는 경우
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• 신규 화면 또는 비즈니스 로직을 RIB으로 변경
• 비즈니스 로직만 처리하는 RIB을 호출하는 경우
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• 신규 화면 또는 비즈니스 로직을 RIB으로 변경
• 비즈니스 로직만 처리하는 RIB을 호출하는 경우
• 화면 모듈을 RIB으로 연결하는 경우
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• 신규 화면 또는 비즈니스 로직을 RIB으로 변경
• Packaging
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• Packaging
• 프로젝트를 별도로 만들어 패키징하고 RIB을 작
게 시작.
• 코드 작성 및 테스트 코드 작성이 쉬워짐.
Related Sessions
• Static, Dynamic Framework 그리고
Encapsulation
Session
Letusgo 2019
Fall
• 프레임워크 주도 개발 Session
Letusgo 2019
Spring
어떻게 기존 프로젝트에 RIBs을 적용
할까?
• 신규 화면 또는 비즈니스 로직을 RIB으로 변경
• 격리화 & 패키징
• 찾아가는 서비스(고기 필요)
요약
요약 - RIB Architecture
• 장점
• 좀 더 템플릿화가 잘 되어 있음.
• 프로토콜 지향 프로그래밍을 할 수 밖에 없는 구조.
• 복잡한 로직 흐름을 모듈화 및 재사용에 강함.
• 단점
• 프로토콜 지향 프로그래밍으로 꼭 해야하지 하는 이해의 문
제
• 파일이 많이 생성되는 문제.
Reference
• LetsSwift 2018 - VCNC RIBs
• Github : Uber/RIBs
• Uber Engineering Blog
QnA
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기

More Related Content

What's hot

생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
ssuserb942d2
 
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
정민 안
 
Hello, ReactorKit 
Hello, ReactorKit Hello, ReactorKit 
Hello, ReactorKit 
Suyeol Jeon
 
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
정민 안
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
태준 문
 
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
williciousk
 
Dagger Hilt Pros and Cons - Android Summit 2020
Dagger Hilt Pros and Cons - Android Summit 2020Dagger Hilt Pros and Cons - Android Summit 2020
Dagger Hilt Pros and Cons - Android Summit 2020
Vasiliy Zukanov
 
Microservices
MicroservicesMicroservices
Microservices
SmartBear
 
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTestRxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
Byeongchan Lee
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
 
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveDataAndroid MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Waheed Nazir
 
카카오뱅크 모바일앱 개발 이야기
카카오뱅크 모바일앱 개발 이야기카카오뱅크 모바일앱 개발 이야기
카카오뱅크 모바일앱 개발 이야기
if kakao
 
Reactjs
ReactjsReactjs
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
GitOps is IaC done right
GitOps is IaC done rightGitOps is IaC done right
GitOps is IaC done right
Chen Cheng-Wei
 
MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentation
G ABHISEK
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
Amazon Web Services
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
충섭 김
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
CONNECT FOUNDATION
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
Hitesh-Java
 

What's hot (20)

생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
 
Hello, ReactorKit 
Hello, ReactorKit Hello, ReactorKit 
Hello, ReactorKit 
 
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
 
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?Let'Swift 2023 Swift Macro, 어디다 쓰죠?
Let'Swift 2023 Swift Macro, 어디다 쓰죠?
 
Dagger Hilt Pros and Cons - Android Summit 2020
Dagger Hilt Pros and Cons - Android Summit 2020Dagger Hilt Pros and Cons - Android Summit 2020
Dagger Hilt Pros and Cons - Android Summit 2020
 
Microservices
MicroservicesMicroservices
Microservices
 
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTestRxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
 
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveDataAndroid MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
 
카카오뱅크 모바일앱 개발 이야기
카카오뱅크 모바일앱 개발 이야기카카오뱅크 모바일앱 개발 이야기
카카오뱅크 모바일앱 개발 이야기
 
Reactjs
ReactjsReactjs
Reactjs
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
GitOps is IaC done right
GitOps is IaC done rightGitOps is IaC done right
GitOps is IaC done right
 
MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentation
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 

Similar to MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기

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
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
병근 손
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
Amazon Web Services Korea
 
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축Atlassian cloud 제품을 이용한 DevOps 프로세스 구축
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축
SooHyunsuPark
 
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket Cloud
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket CloudAtlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket Cloud
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket Cloud
Open Source Consulting
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
철구 김
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
Jongwon Han
 
베스핀글로벌 DevOps 서비스 소개
베스핀글로벌 DevOps 서비스 소개베스핀글로벌 DevOps 서비스 소개
베스핀글로벌 DevOps 서비스 소개
BESPIN GLOBAL
 
발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서Gitaek kwon
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지YoungSu Son
 
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
uEngine Solutions
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
Terry Cho
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
장현 한
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
Gyuwon Yi
 
델파이 코드 마이그레이션 Step by Step
델파이 코드 마이그레이션 Step by Step델파이 코드 마이그레이션 Step by Step
델파이 코드 마이그레이션 Step by Step
Devgear
 
QlikView ppt
QlikView pptQlikView ppt
QlikView ppt
Tomi Lee
 
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
Jay Park
 
서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)
Terry Cho
 
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 - 박성훈 NEOWIZ 팀장,...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 -  박성훈 NEOWIZ 팀장,...[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 -  박성훈 NEOWIZ 팀장,...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 - 박성훈 NEOWIZ 팀장,...
Amazon Web Services Korea
 

Similar to MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기 (20)

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 총정리
 
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
주니어 입장에서 바라보는 디자인패턴 & 아키텍쳐.pdf
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축Atlassian cloud 제품을 이용한 DevOps 프로세스 구축
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축
 
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket Cloud
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket CloudAtlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket Cloud
Atlassian cloud 제품을 이용한 DevOps 프로세스 구축: Jira Cloud, Bitbucket Cloud
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
 
베스핀글로벌 DevOps 서비스 소개
베스핀글로벌 DevOps 서비스 소개베스핀글로벌 DevOps 서비스 소개
베스핀글로벌 DevOps 서비스 소개
 
발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지
 
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
 
델파이 코드 마이그레이션 Step by Step
델파이 코드 마이그레이션 Step by Step델파이 코드 마이그레이션 Step by Step
델파이 코드 마이그레이션 Step by Step
 
QlikView ppt
QlikView pptQlikView ppt
QlikView ppt
 
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
 
서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)
 
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 - 박성훈 NEOWIZ 팀장,...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 -  박성훈 NEOWIZ 팀장,...[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 -  박성훈 NEOWIZ 팀장,...
[Games on AWS 2019] AWS 사용자를 위한 만랩 달성 트랙 | 코드 기반으로 인프라 운영하기 - 박성훈 NEOWIZ 팀장,...
 

More from 정민 안

20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf
정민 안
 
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdfInjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
정민 안
 
Letusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUILetusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUI
정민 안
 
Debugging with xcode, lldb and chisel
Debugging with xcode, lldb and chiselDebugging with xcode, lldb and chisel
Debugging with xcode, lldb and chisel
정민 안
 
Introduce fastlane
Introduce fastlaneIntroduce fastlane
Introduce fastlane
정민 안
 
Git lecture
Git lectureGit lecture
Git lecture
정민 안
 
형상관리 발표자료 안정민
형상관리 발표자료 안정민형상관리 발표자료 안정민
형상관리 발표자료 안정민
정민 안
 

More from 정민 안 (7)

20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf
 
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdfInjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
 
Letusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUILetusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUI
 
Debugging with xcode, lldb and chisel
Debugging with xcode, lldb and chiselDebugging with xcode, lldb and chisel
Debugging with xcode, lldb and chisel
 
Introduce fastlane
Introduce fastlaneIntroduce fastlane
Introduce fastlane
 
Git lecture
Git lectureGit lecture
Git lecture
 
형상관리 발표자료 안정민
형상관리 발표자료 안정민형상관리 발표자료 안정민
형상관리 발표자료 안정민
 

MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기