정상에서 IT를 외치다

[NaverTechConcert] 네이버 테크 콘서트: 안드로이드 - 2일차 본문

컨퍼런스

[NaverTechConcert] 네이버 테크 콘서트: 안드로이드 - 2일차

Black-Jin 2018. 11. 2. 16:31
반응형


안녕하세요. 블랙진입니다.

어제 다녀온 네이버 테크 콘서트 1일차에 이은 2일차 포스팅입니다.


(캡처된 사진과 발표자 내용은 모두 2018.11.02 기준 http://techcon.naver.com/ 에서 가져왔습니다.)





내용

변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가? 안드로이드는 끊임없는 OS 버전 뿐만아니라 개발 언어, 구조, GUI등 많은 부분에서 다양항 변화가 시도되고 있습니다. 많은 방법론과 라이브러리가 제공되다보니 어떤 전략과 기준으로 개발해야하는지 혼돈스러울 때가 많습니다. 네이버 앱의 개편에 적용한 기술 사례와 방법론을 통해서 효율적인 앱 개발애 대해서 얘기하고자 합니다.

목차

1. 안드로이드 앱의 구조

2. 함수형과 객체형: 함수형과 객체형 개발 어떻게 적용할 것이가?

3. GUI 기반 구조: Activity 구조,Fragment 구조, View 기반의 구조의 장단점은 무엇인가? 어떤 구조를 택할 것인가?

4. 데이터 모델: 데이터 모델이 필요한가? MVC, MVP, MVVM 이 정말 필요한가?

5. 프로세스 와 쓰레드 어떤 모델로 가져갈 것인가? : Service, AsyncTask, Thread, JobManager, WorkManager, Coroutine ,Loader 너무 많은데
무엇이 정답인가? 멀티 프로세스 모델 어떻게 설계할 것인가?

6. 통계와 설정: 어떤 정보를 모으고 최적할 것인가?

안드로이드 플랫폼을 바라보는 관점이 엄청 깊다는 것을 이번 발표를 통해 알 수 있었습니다. 네이버 앱의 처음부터 지금까지를 개발해 오신 분이라는 것을 다시 한번 실감할 수 있었고 많은 것을 얻을 수 있었습니다.


저번 포스팅에서 네이버 테크 콘서트 앱을 소개 했었습니다. 발표자 분께서 이 앱을 만드는데 배포까지 10시간(개발 7시간)이 걸렸다고 했습니다:)


네이버 앱을 개발하면서 앱의 크기가 커지면서 JAVA 를 사용하는것에 대해 근본적인 문제에 대해 고민한 경험을 발표해 주셨습니다.


Problem of Java


1. 상속과 오버라이드

2. 객체 내에 모두 선언해야하는 딱딱함

3. Listener 표현이 코드를 복잡하게


상속안에 상속이들어가고 그 안에 계속 상속이 들어가다 보니 코드의 가독성이 떨어지고 복잡해 지는 문제가 발생합니다. 이에 JAVA8 등의 방법으로 해결하러 했지만 이번 구글의 Kotlin 발표를 듣고 Kotlin을 사용해 네이버 앱을 개편한 경험을 이야기 했습니다.


또한 안드로이드 개발을 하는데 있어 여러가지 질문을 던져 주었습니다.


Activity가 뭐죠? 왜 라이프사이클을 가지고 있는걸까요?

Activity 로만 앱을 만드는 것이 효율적인가요?


개발을 하는데 있어 라이브러리, 툴, 언어 등 모든 것을 사용하는데 있어 치열하게 고민했던 내용들을 이야기해주었습니다. 개발자라면 개발하는데 사용했던 모든 것에 그 만한 이유가 있어야 되는것을 많이 느꼈습니다. 그냥 '남들이 사용하니깐', '이게 더 좋다고 하니깐' 이 아닌 개발자 스스로 이유를 찾고 선택을 하고 팀원이 있다면 설득을 해야 된다는 것을 말입니다.





목차

1. 안드로이드 앱의 구조

2. 함수형과 객체형: 함수형과 객체형 개발 어떻게 적용할 것이가?

3. GUI 기반 구조: Activity 구조,Fragment 구조, View 기반의 구조의 장단점은 무엇인가? 어떤 구조를 택할 것인가?

4. 데이터 모델: 데이터 모델이 필요한가? MVC, MVP, MVVM 이 정말 필요한가?

5. 프로세스 와 쓰레드 어떤 모델로 가져갈 것인가? : Service, AsyncTask, Thread, JobManager, WorkManager, Coroutine ,Loader 너무 많은데
무엇이 정답인가? 멀티 프로세스 모델 어떻게 설계할 것인가?

6. 통계와 설정: 어떤 정보를 모으고 최적할 것인가?

MVVM의 효율적인 사용을 위해 현업에서 사용한 방법과 고민에 대해 잘 설명해 주었습니다. 또한 예제 샘플을 통해 발표하여 이해하기 쉽고 편하게 볼 수 있었습니다. 이번 발표에서 사용한 예제를 깃허브에 올려 주셨습니다.


발표 내용을 정리해 보았습니다.


What problem MVP?


- Prenenter code 1000Line 넘어가

- 비슷한 화면에서 중복되어 생성되는 코드를

- 수많은 상태를 관리하다 머리가 아파

- View Prenenter 보일러 플레이트 코드가 늘어나 피곤했던


코드량, 복잡성 up -> 유지보수성, 테스트용이성 down -> 다른 디자인 아키텍처를 고민하게 됨



What? MVVM

  • Mode, View, ViewModel 수정되어 있는 패턴
  • ViewModel View 추상화 이다.
  • View ViewModel n:m 관계이다.


HOW MVVM? - efficiently, testable

  • Databinding, UserCase, Rx, LiveData 사용
  • CleanArchitecture 지향
  • Koin 사용하여 IOC(Insersion Of Control) 구현
  • Spek 사용하여 행동 주도 결과 테스트를 작성


Koin?

  • 제어의 역전을 구현 있게 도와주는 Library
  • Service Locator 방식으로 구현되어 있어 Dagger 보다 가볍고 사용하기 용이하다
  • AAC 지원해준다.
  • RunTime에서 에러를 확인 있다.


Spek 이용한 테스트 코드 작성(순서)

  • Feature
  • Scenario
  • Given
  • When
  • Then


Dagger2 vs Koin

  • Heavy vs light
  • Dependency Injection vs ServiceLocator
  • Compile Time vs RunTime


발표자료



내용

디자이너와 기획자는 어떤 일과 생각들을 하는지 소개합니다.

목차

1. 뭐하는 사람들인가
  - UI / 인터렉션 / BX 디자이너의 일
  - UX / 기획자의 일

2. 그들의 생각
  - 디자이너 : 왜 1px을 옮겨달라고 할까
  - 기획자 : UX적으로(??) 해결해달라구요?!

3. 어떻게 일하면 좋을까
  - 상세 설계 공유방식에 대한 고민
  - 커뮤니케이션

4. 혹시 디자인에 관심이 있으시다면

5. 내가 사랑했던 개발자들

"디자이너는 왜 1px을 옮겨 달라고 할까?"에 대한 디자이너의 생각이 가장 인상 깊었습니다. 저 1px이 무슨 차이이지? 꼭 옮겨야 되는 것인가? 이런 생각을 그동안 해왔지만 이번 발표를 통해 그만한 충분한 이유가 있다는 것을 알았습니다. 그 외에도 디자이너의 종류와 협업을 위한 방법에 대해 많은 정보를 전달해 주었습니다.


디자이너는 뭐하는 사람들인가?

  • UI 디자이너 / 사용자 인터페이스 디자인하는 사람 / 스케치, 제플린, 포토샵
  • 인터렉션 디자이너 / 화면간 트랜지션 또는 서비스UI 필요한 애니메이션 / 에펙, 프리미어, 프레이머, 포토샵, 스케치
  • BX 디자이너인쇄작업로고, 브랜드 아이덴티티 전략 디자인 / 일러스트 ,포토샵, 인디자인..
  • Graphic 디자이너 / 서비스에 필요한 아이콘 또는 일러스트와 같은 그래픽 요소를 그리는 사람 / 포토샵, 일러스트 

 어떻게 일하면 좋을까?

  • 깃허브 사용
  • 커뮤니케이션 / 의견은 자유롭게!! 하지만 해결방법은 상대에세 맡겨주세요. ("이런 이런화면은 사용성이 떨어질 같은데요" 등등..)




내용

안드로이드에서 웹컨텐츠를 렌더링 하는데 많이 사용하고 있는 웹뷰의 동작 원리 대한 설명과 이를 바탕으로 한 웹 성능 최적화를 위한 여러가지 툴 사용법을 설명하는 세션입니다.

목차

1. History of Android WebView

2. Summary of how browsers work

3. Rendering pipeline overview

4. How chromium makes a frame?

5. VSync aligned touch input & frame output






내용

1.3에 정식으로 포함될 코루틴! 안드로이드에서 코루틴의 적용은 어떻게 할 수 있으며, ReactiveX(RxJava/RxKotlin)과 비교 한다면 좋은점과 부족한 점, 그리고 실무 프로젝트에 적용한 코루틴을 소개해본다.

목차

1. 코루틴 소개(서브루틴과 코루틴)

2. 코루틴을 통해 할 수 있는것?

3. 코틀린 코루틴에서 제공하는 주요 기능들

4. 실제 업무에 적용한 코루틴 소개

5. 코루틴 써보니? RxJava와 비교
        







내용

QA 담당자들에겐 계륵과 같았던 자동화 테스트의 라이브러리를 구현하고 실질적인 효과를 볼 수 있도록 문제점들을 보완하기 위해 개발한 EventChecker와 rMon의 개편 히스토리입니다.

목차

1. UI Test Automation

2. Automation Library

3. Android Event Check

4. Resource Monitoring
        

이렇게 2일동안의 네이버 테크 콘서트를 모두 보고 왔습니다. 아직도 배워야 될게 너무나 많다는 것을 느꼈고 더 열심히 공부해서 더 높이 올라가고 싶어졌습니다. 




안녕~! 네이버~!


[발표 자료 공유]  

오늘 진행된 네이버 테크 콘서트의 DAY 2 에서 발표된 내용은 아래 링크에서 다시 보실 수 있습니다. 

- 발표자료 :  https://www.slideshare.net/NaverEngineering  

- 라이브 영상 :  https://tv.naver.com/naverd2 

반응형
Comments