플로우

Kotlin
코스 프로모션 배너 전용입니다.
0 0시간 0 0 코스 프로모션 배너 전용입니다.
(자동) (자동) (자동)
정가 (자동)
현재 판매가 (자동)
12개월 무이자 할부 시 (자동)

“국내 은행 1위 앱 카카오뱅크에서
Kotlin Coroutine 리팩토링을 진행한 김용욱에게
Coroutine의 개념부터 내부구조까지 배워보세요”

Google은 Android OS에서 비동기 처리 및 효과적인 동시성 작업을 위해 코루틴과 플로우 사용을 권장합니다.

기존 Java/Android의 동시성 프레임워크가 제공하는 단점들을 코루틴을 통해 훨씬 쉽게 경량화/간소화된 코드로 처리할 수 있으며 코틀린이 언어적으로 제공하는 다양한 기본형들을 활용해 비동기 코드를 마치 동기 코드처럼 쉽게 작성할 수 있으며 복잡한 동시성과 병렬성을 ‘쉽게’ 시작할 수 있습니다.

본 강의에서는 효과적으로 동시성 프로그래밍과 비동기 처리를 하기위한 코루틴과 플로우의 개념부터 동작 방식, 적용 방법을 하나하나 개념과 실습 형태로 학습하고, 이미지 검색 앱 구현 프로젝트를 통해 코드랩 형태로 만들어봅니다. 또한, 서로 다른 코루틴 사이의 데이터를 전달하기위한 채널의 개념과 적용 방법, 코루틴의 내부구조를 파악하며 더욱 효율적으로 코루틴을 사용할 수 있도록 구성하였습니다.

코루틴을 한 번도 안써본 사람은 있어도, 한 번만 쓴 사람은 없습니다.두려워하지않고 시도해보면 새로운 세상이 열릴 것이라 자신합니다.


by 김용욱

“기존 Callback과 RxJava로 Android 개발을 하며 생기는
단점을 Coroutine 과 Flow가 해결할 수 있습니다.”

  • Problem 1
    Callback

    ▪Callback Hell
    ▪비효율적인 에러 처리
    → 성공 콜백&실패 콜백을 모두 고려해야 함
    ▪복잡해지는 코드로 인한 가독성 저하
    → 유지·보수의 어려움

  • Problem 2
    RxJava

    ▪불필요한 Stream 작업 발생
    → 원샷 작업도 Stream 방식으로 작성하도록 강요
    ▪Chaining으로 인한 가독성 저하
    ▪직관적이지 않은 코드
    → Stream & Operator에 대한 고민 필요

  • Coroutines & Flow

    ▪순차적 코드 작성을 통한 직관적인 코드
    ▪에러 처리의 효율화
    → Coroutines Exception Handler(CEH, 통합적 처리) & 표준 예외 처리 방식 모두 사용 가능
    ▪개발 협력성 증가
    → Dispatcher를 통한 다양한 쓰레드의 협력적 사용
    ▪선택적 Stream 활용으로, 효율성 증가
    → 순차적으로 코드 작성 중 Stream이 필요할 경우, Flow로 대응 가능

코틀린

코루틴의 가장 큰 장점은 ‘순차적인 코드 작성’이 가능하다는 점입니다.

기존에는 공통된 문법이 없어, 동기코드와 비동기코드를 작성할 때 항상 다른 형태를 사용해왔습니다. (Callback, RxJava - obserable, operator) Callback과 RxJava의 문법에 맞게 변형하는 부가적인 과정이 필요하기 때문에, 코드를 읽을 때 작동 방식을 이해하기 어려웠는데요, RxJava를 더 잘 쓸수록 협업하는 개발자들이 해석하는 데 어려움을 겪고, 코드를 수정할 때도 추가적인 사고과정이 필요했죠. 코드 공유가 불가하고, 추상화의 단계가 더 필요했습니다. 게다가 디버깅이 어렵고, 기존에 동기로 작성되었던 코드를 비동기 코드로 사용할 수도 없었습니다. 그러나, 코루틴은 순차적인 코드, 그리고 상태 변화에 대응하는 플로우를 통해 이러한 문제점들을 획기적으로 해결할 수 있습니다.

김용욱에게 코루틴&플로우을 배우면
코루틴의 표면부터 심층 구조까지 제.대.로. 이해하고 적용할 수 있습니다.

더 명확하고 간결한 코드를 작성하면서 최신 라이브러리를 효과적으로 사용할 수 있는 역량을 길러보세요!

코루틴&플로우를
Basic-intermediate-Advanced
3단계 실습 난이도 별로
학습할 수 있습니다.

코루틴&플로우&채널의
20가지 이상의 필수 개념을
Kotiln Playground에서
설치 없이 실습합니다.

네이버 API를 사용하여
이미지 호출과 pinned 기능을 탑재한
이미지 검색 앱을 만드는 프로젝트로
코루틴&플로우를 더욱 심도있게 학습합니다.


Point 01

코루틴&플로우의 기본 개념부터 코루틴의 내부 구조까지
난이도에 따라 3단계로 구성된 커리큘럼

동시성 처리를 위한 코틀린&플로우의 개념과 활용 방법부터, 채널과 공유 객체에 대한 이해, 코루틴 내부구조까지!
연차에 관계없이 코루틴을 학습하고자 하는 모든 분들을 위해 난이도별로 챕터를 구성하였습니다.

▪ADVANCED : 5년차 개발자
코루틴 내부구조를 살펴보면서 다양한 형태의 활용 방법까지 학습합니다. 이를 통해 가장 효율적인 사용법을 파악하고 적용해볼 수 있습니다.

▪INTERMEDIATE : 2년차 개발자
코루틴&플로우에 대해 더욱 깊이있게 다루며, 채널의 개념을 학습합니다. 안드로이드 앱 구현 프로젝트를 통해 여태까지 배운 코루틴&플로우&채널의 개념을 적용해봅니다.

▪BASIC : 신입에서 1년차 개발자
코루틴&플로우의 기본 개념을 강의 + 코드 실습 형태로 학습합니다.

Point 02

코루틴&플로우의 필수 개념 20가지 이상 실습
Kotlin Playground를 이용하여 별도의 웹 및 설치 필요 없이
코루틴, 플로우, 채널을 실무에 활용하는데 필요한 20가지 이상의 개념을 코드로 실습할 수 있습니다.

코루틴 플로우

실습 환경 : Kotlin Playground

코루틴 예제

별도 프로그램을 설치할 필요 없이
Kotiln Playground 웹 환경에서 배운 개념을
직접 코드로 구현하고 잘 작동하는 지 실행(run)해 볼 수 있습니다!


Point 03

실전 프로젝트 진행 : 이미지 검색 앱 구현 with Coroutines&Flow
검색어에 맞는 이미지를 호출하고, 해당 이미지를 pinned 할 수 있는 안드로이드 앱을 직접 구현합니다.
프로젝트를 진행하며 리스트 구조, REST API 사용, 에러 처리, 디버깅 방법 등을 실습합니다.

Point 03 | Project | 이미지 검색 앱 만들기
이미지 검색 앱 만들기

* 본 자료는 예시 이미지로 실습 이미지와 다를 수 있습니다.

▪안드로이드 스튜디오에서 코루틴&플로우를 사용하는 핸즈온을 진행하며 이미지 검색 앱을 구현해봅니다. 이 과정에서 코루틴&플로우의 효율적인 활용법까지 학습합니다.
▪모바일 개발자 채용 과정에서 빈출되는 이미지 검색 과제를 대비합니다. 코루틴으로 코드를 작성하고, 이 코드를 코루틴&플로우로 확장해봅니다.
▪키워드 기반 검색 기능과, 즐겨 찾기 저장 기능을 가진 앱을 구현합니다.
▪리스트 구조, REST API사용, 에러 처리, 디버깅 방법 실습을 프로젝트 내에서 진행합니다.

Step 1

순차적 코드 작성을 통한 앱 구현
강의를 통해 배운 코루틴&채널의 개념을 활용하여 이미지 검색 앱을 구현합니다.
코루틴을 활용하여 순차적으로 코드를 작성합니다.

코루틴 코드
Step 2

Coroutines & Flow로 리팩토링
STEP 1에서 작성한 코드에서, Stream 방식이 효과적인 부분에 Flow를 적용하여 리팩토링합니다.
(로딩, 완료상태를 관리하기 위한 플로우로 개선해보는 형태)
=> 필요에 따라 플로우를 쓸 수 있도록, 데이터가 연속적으로 흐를 때 (= 상태가 바뀔 때)

코루틴 리팩토링
Top of Top

은행 앱 1위인 카카오뱅크·미국 모바일 데이터베이스 Realm을 거치며
다양한 프로젝트에서 Kotlin Coroutine 리팩토링을 진행한 Android 개발자, 김용욱

국내 최.초.의 안드로이드 GDE(Google Developer Expert)이자
GDG(Google Developer Group) Korea Android의 창립자

구글에서는 구글 기술에 관심이 많은 개발자를 “Google Developers Expert (GDE)”로 선정하여, 개발자 커뮤니티 구성원들이 구글 엔지니어들과 소통하여 새로운 기술을 익히고 다양한 개발 경험을 공유하는 장을 마련하고 있고, 커뮤니티에서 좋은 성과와 영향력을 보이는 개발자를 GDE로 선정합니다. 저는 국내 최초 GDE로 선정된 안드로이드 개발자입니다. 또한, 2013년에 구글 플랫폼과 관련된 개발 활동을 하는 개발자들의 커뮤니티인 “Google Developer Group(GDG) Korea Android”를 창립하여 안드로이드 개발 환경의 저변을 넓히기 위한 개발자들의 커뮤니티 확대, 강연 등을 진행했습니다.

국내 1위 은행 앱 카카오뱅크7가지 주요 기능 개발

“카카오뱅크에서 근무하던 당시, 개발의 효율성, 협력성을 높이기 위해 코루틴으로 전환하고 싶다는 생각이 들었습니다. 저와 같은 생각을 갖고 있던 동료들과 함께 수차례에 걸친 코루틴 세미나를 열고, 다른 동료들을 설득하는 데 성공했죠. 코루틴의 내부 구조를 다룬 세미나가 가장 반응이 좋았기에, 여러분에게도 공유하고자 합니다.”

카카오뱅크 Android Core Team 개발자로 앱 내 다양한 기능을 개발하고 유지 보수하였습니다.
: 26주 적금, 저금통, 보안 모듈 개발, OCR(광학 문자 인식), 신용카드, 외환 송금, 위젯
앱 개발에서 서드 파티 라이브러리가 버그가 있으면 패치를 같이 진행하였고, OCR(광학 문자 인식)을 위해 최적화를 진행하였으며 보안 모듈을 C++로 개발하였습니다.

오픈 소스 데이터베이스 기업 Realm 소속 모바일 데이터 베이스 Java 개발자

미국 샌프란시스코에 위치한 Realm 소속 Java 개발자로 모바일 데이터 베이스를 위한 데모 애플리케이션의 Java 바인딩 및 C++. Java, Groovy 코드를 개발하였고 Realm Cocoa 버전에 선행 개발된 기능을 Realm Java로 이식하였습니다. Realm 모바일 데이터베이스는 당시 안드로이드는 Java 버전으로 구성되어 있었고 Realm Cocoa는 Swift와 Objective C 기반으로 되어 있었습니다. Realm Cocoa가 선행 개발이 되었으므로 먼저 개발된 기능을 안드로이드로 포팅하는 일도 하였고 장기적인 로드맵에 따라 안드로이드 버전에 필요한 기능도 개발을 하였습니다.

• 2018 ~ 2021
카카오뱅크 / Android Core팀 개발자
- 카카오 뱅크 Application 저금통, 26주 적금, 보안 모듈 개발.(C++), OCR, 신용카드, 외환 송금, 위젯 개발

• 2015 ~ 2017
Realm (미국/remote) / Java Developer
- Realm Java 바인딩 개발. C++. Java, Groovy 코드 개발
- Realm Cocoa 버전에 선행 개발된 기능을 Realm Java로 이식.예제 코드 버전 관리.
- Realm 데이터베이스를 위한 데모 애플리케이션을 개발.
- 한국어 글과 튜토리얼 제작. iOS와 안드로이드 공식문서 번역. Realm World Tour를 비롯한 다수의 행사 주최.

• 2014~2015
필링선데이 / CTO
- 자바 기반의 안드로이드 앱과 Flask 기반의 백엔드 서버를 개발.(사진 공유 서비스)

• 2013~2015
레이지비 / CTO
- Cocos2d-objc와 Cocos2d-x로 여러 미니게임을 제작.

• 2012 ~ 2013
팅크웨어 / 선임 개발자
- 실시간 그림자, 반사광을 포함한 씬그래프 엔진 개발, 안드로이드를 위한 3D UI 툴킷 및 기타 여러 커스텀 뷰 개발
- 블랙박스 업데이트와 설정, 실시간 영상을 확인하기 위한 애플리케이션 제작.

• 2009 ~ 2012
유비벨록스 / 선임 개발자
- 커널 패치, 안드로이드 플랫폼 패치. 안드로이드 환경을 위한 천지인 키보드 개발.
- OpenGL ES를 이용한 3D 툴킷 개발
- MMS를 위한 HTML 제너레이터 개발
- 실버라이트 기반의 위젯(페이스북, 트위터, RSS)으로 여러 소셜 미디어와 RSS를 통합하는 위젯 개발
<강연 및 기타 활동>

• 2021
동국대학교 융합교육원 / 2021 Farm 경진대회 사전 평가
KAIST 문술미래전략대학원 / 인공지능과 법 특강
과기부 SW 중심사회 / SW기업 인터뷰


• 2020
Glide / 오픈 소스 라이브러리 패치
Glide Webp Decoder / 오픈 소스 라이브러리 패치 예문사 / 안드로이드 서적 집필


• 2019
if(Kakao) / if(Kakao) 2019 발표

• 2018
Naver Tech Concert: Android / 테크 콘서트 발표
커넥트 재단 / 부스트코스 리뷰어


• 2017
커넥트 재단 부스트캠프 / 발표
Deview / Deview 2017 발표
Realm Realm World Tour / 서울 발표 및 도쿄 지원
Droid Knights / 드로이드 나이츠 발표


• 2016
GDG Seoul / 삼목 정복

• 2015
Deview / Deview 2015 발표
GDG Korea Android / GDG Korea Android 발표
나는 프로그래머다 / 나는 프로그래머다 컨퍼런스 발표
나는 프로그래머다 / React, React Native 세미나
React Native / 오픈 소스 라이브러리 패치


• 2014
GDG Korea Android / GKAC 2014 세미나
TalkIt GDG Live Talk Show / 고정 패널


• 2012~2013
Google Devloper Expert / Android GDE
GDG Korea Android / GDG Korea Android 창립
GDG Seoul Android / 개발자 모임 발표
김용욱
국내 최초 GDE, GDG Korea Android 창립자
Android Developer 김용욱의 코루틴&플로우 강의
지금 최저가로 만나보세요!
코스 프로모션 배너 전용입니다.
0 0시간 0 0 코스 프로모션 배너 전용입니다.
(자동) (자동) (자동)
정가 (자동)
현재 판매가 (자동)
12개월 무이자 할부 시 (자동)
상세 커리큘럼

1부. 코루틴과 동시성 프로그래밍

2부. 비동기 데이터 스트림, 플로우

3부. 코틀린 채널

4부. 코루틴과 플로우의 적용

5부. 인사이드 코루틴

FAQ
강의를 수강하는데 필요한
사전지식이 있나요?
▪코틀린 프로그래밍에 대한 이해
▪REST API 호출
▪안드로이드에 대한 기본 지식

* 본 강의는 Android, Kotlin에 대한 기초 지식을 다루지 않습니다.

어떤 사람이 들으면
가장 도움이 될까요?
▪모바일(안드로이드) 앱 개발자 - 코루틴&플로우&채널 개념을 정확히 이해하고 실무에 적용하고 싶은 2, 3년차 개발자
- 코루틴&플로우 개념을 정확히 이해하고 싶은 신입 - 1년차 개발자
- 코루틴&플로우를 마스터하고 내부구조까지 뜯어보고싶은 5년차 이상 개발자

* 코루틴&플로우를 마스터하기 위해 신입부터 5년차 이상 개발자까지 수강 가능한 강의입니다.

실습에
사용하는 Tool
[스택]
Kotlin 1.6.10
Coroutine 1.6.0
Retrofit 2.9.0

[실습 환경]
Kotlin Playground(웹, 설치 필요 없음)
IntelliJ IDEA Community edition 2021.3.1
️Andriod Studio Bumblebee 2021.1.1
패스트캠퍼스

[이벤트 주의사항 및 환불규정 ]

이벤트 주의사항 및 환불규정 바로가기 ☞

수강료.

  • The RED : 효과적인 비동기 처리를 위한 Kotlin coroutines & Flow 마스터 by 김용욱

    현재 정가 대비 64% 할인 중!
    7월 31일 일요일 자정 까지

    정가 630,000원
    현재 판매가 223,000원

    12개월 무이자 할부 시 월 18,583원

  • The RED : 효과적인 비동기 처리를 위한 Kotlin Coroutines & Flow 마스터 by 김용욱+ [50%] 즉시할인 쿠폰 증정 (7.13 23:59까지 사용 가능)

    현재 정가 대비 64% 할인 중!
    7월 10일 일요일 자정 까지

    정가 630,000원
    현재 판매가 223,000원

    12개월 무이자 할부 시 월 18,583원

국내 8개 카드사 12개월 무이자 할부 지원! (간편 결제 제외)

  • 삼성카드
  • 신한카드
  • 롯데카드
  • 현대카드
  • 하나카드
  • BC카드
  • KB국민은행
  • NH농협카드

※ BC카드의 경우, 비씨(페이북)을 선택하여 결제시에만 12개월 무이자 할부가 가능합니다.
(BC계열 – 우리/제일/기업/대구/경남/부산/광주/수협/전북/제주/신협)