Skip to content

Latest commit

ย 

History

History
178 lines (124 loc) ยท 5.63 KB

0711_NAVER_TECH_CONCERT_2019_Android.md

File metadata and controls

178 lines (124 loc) ยท 5.63 KB

NAVER TECH CONCERT 2019 : Android

NAVER TECH CONCERT 2019 : Android

  • โฐ ์ผ์‹œ : 2019. 07. 11 (๋ชฉ)
  • ๐Ÿ’ ์ฃผ์ตœ : NAVER
  • โ›ณ ์žฅ์†Œ : ๋„ค์ด๋ฒ„ ๊ทธ๋ฆฐํŒฉํ† ๋ฆฌ
  • ๐Ÿ”— ๋งํฌ : http://techcon.naver.com/

๐Ÿ‘ ์ดํ‰

  • ์ž‘๋…„์— ์ด์–ด ๊ธฐ๋ณธ์ด์ง€๋งŒ ํ•ต์‹ฌ์ธ ๋‚ด์šฉ๋“ค์ด ๋งŽ์•„์„œ ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค.
  • ์ž‘๋…„๋ณด๋‹ค ๋Œ€์ƒ ๊ฒฝ๋ ฅ์ธต์ด ๋‚ฎ์•„์ ธ ํ•™์ƒ์œ„์ฃผ๋กœ ์ดˆ์ ์ด ๋งž์ถฐ์ง„ ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ค๊ธด ํ–ˆ๋‹ค.
  • ๋‘๋ฒˆ์งธ ์„ธ์…˜์ธ '์˜ˆ์ œ์—์„œ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š” ๋ชจ๋ธ ์ด์•ผ๊ธฐ' ๋Š” ์ •๋ง ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค.

๐Ÿ“ธ ์ธ์ฆ์ƒท

์ธ์ฆ์ƒท

๊ฐ๋„์˜ ์ค‘์š”์„ฑ

1. ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ์„ธํŒ… ๋‹ค์‹œํ•˜๊ธฐ

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ๋…ธํ˜„์„ ๋„ค์ด๋ฒ„
  • ๐Ÿ“ฝ๏ธ ๋ฐœํ‘œ ์˜์ƒ : ์˜์ƒ ๋งํฌ
Quick Lists
- Gradle Sycn, Split ๊ธฐ๋Šฅ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์“ธ ์ˆ˜ ์žˆ๋‹ค. 

Keymap
- ํ€ต๋ฆฌ์ŠคํŠธ๋ฅผ ํ‚ค๋งต์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Notification
- ๋ณด์ด์Šค์˜ค๋ฒ„ ๊ธฐ๋Šฅ๋„ ์žˆ๋‹ค. 
- ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ๋‹ค.

FileColor
- ํ”„๋กœ์ ํŠธ ๋ทฐ์—์„œ ๊ทธ๋ž˜๋“ค, ํ…Œ์ŠคํŠธ ๋“ฑ์ด ํ•˜์ด๋ผ์ดํ‹ฐ๋“œ ๋œ ์ปฌ๋Ÿฌ๋ฅผ ์˜๋ฏธ.
- ProductFlavor์— ๋”ฐ๋ผ ์ƒ‰์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

Reformat code
- commit ์—์„œ๋„ reformat์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 
- Editor > inspection > Kotlin > "file is not formatted"์„ ์„ค์ •ํ•˜๋ฉด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์–ด๋…ธํ…Œ์ด์…˜ //@formatter:off ๋กœ ํฌ๋งคํ„ฐ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. 

breakPoint
- preference > debug > ์ปจ๋””์…˜์ด ์žˆ๋Š”๊ฒฝ์šฐ ์‚ญ์ œํ•  ๋•Œ ํ™•์ธํŒ์—…์„ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์„ค์ •์ด ์žˆ๋‹ค.

Language
- ํ”„๋ฆฌํผ๋Ÿฐ์Šค > language injection > advanced > add aonntation ์ž๋™ ์„ค์ • 

layout edditor 
- ํ”„๋ฆฌํผ๋Ÿฐ์Šค > ๋ ˆ์ด์•„์›ƒ ์—๋””ํ„ฐ > ํ”„๋ฆฌํผ xml


๋ผ์ด๋ธŒํ…œํ”Œ๋ฆฟ
- ํ”„๋ฆฌํผ๋Ÿฐ์Šค > ๋ผ์ด๋ธŒ ํ…ํ”Œ๋ฆฟ > + > ๋‹จ์ถ•ํ‚ค ์™€ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€
- ๋ ˆ์ด์•„์›ƒ๋„ ๊ฐ€๋Šฅ : 
- ํฌ์ปค์Šค์— ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
- ์ปค์Šคํ…€๋ทฐ ๋“ฑ์„ ํƒฌํ”Œ๋ฆฟ์— ์ถ”๊ฐ€ํ•˜์—ฌ ํ•œ๋ฒˆ์— ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํ”„๋ฆฌํผ๋Ÿฐ์Šค > ์‹œ์Šคํ…œ์„ธํŒ… > ๋ฉ”๋ชจ๋ฆฌ ์„ธํŒ… ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ™•์žฅ ๊ฐ€๋Šฅ
ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ „๋ถ€ ๋บ€๋‹ค.

2. ์˜ˆ์ œ์—์„œ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š” ๋ชจ๋ธ ์ด์•ผ๊ธฐ

Model 
์—ญํ•  ๋ถ„๋ฆฌ (์ฑ…์ž„)์— ๋”ฐ๋ฅธ ๋ถ„๋ฆฌ๊ณผ์ •


1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํŒจํ„ด

๋ ˆํฌ์ง€ํ† ๋ฆฌํŒจํ„ด : ํ•˜๋‚˜์˜ ๋ ˆํฌ๋Š” ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ
์ถ”์ƒํ™”๋ฅผ ์ด์šฉํ•˜์—ฌ (์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ
-> ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ด

2. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌ branch:model_V2
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋ž€? : ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ ๋ชฉ์ 

ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด๊ฐ€ ๋„ˆ๋ฌด ๋น„๋Œ€ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด

์„œ๋น„์Šค : 
์„œ๋น„์Šค๋ ˆ์ด์–ด ํŒจํ„ด (n-tier, 3-layer์—์„œ ํŒŒ์ƒ)
๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์˜ ์ง‘ํ•ฉ์†Œ ๊ฐœ๋…, ์žฌ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๋‹ค.
MSA์— ์œ ์šฉ
์„ค๊ณ„๊ฐ€ ์งœ์ž„์ƒˆ๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
์™„๋ฒฝํ•˜๊ฒŒ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ ๋ถ„๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ


UseCase:
ํ•˜๋‚˜์˜ ์œ ์ €ํ–‰๋™์— ๋Œ€ํ•œ ์„œ๋น„์Šค(Applicatoin)์˜ ๋น„์ง€๋‹ˆ์Šค๋กœ์ง์ด ๋‹ด๊ฒจ์žˆ๋Š” ๊ฐ์ฒด
์„œ๋กœ(UseCase)์—๊ฒŒ ๋…๋ฆฝ์ 
์œ ์ง€๋ณด์ˆ˜, ๋ณ€๊ฒฝ์ด ์œ ๋ฆฌ
* ์œ ์ €์˜ ํ–‰๋™(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง)๊ณผ 1:1 ๋งค์นญ

3. exception_handling 
ํ”„๋ ˆ์  ํ„ฐ์˜ ์ต์…‰์…˜ ํ•ธ๋“ค์ด ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์ธ ์ด์œ  
:httpException, 403์ฝ”๋“œ ์ฒดํ‚น์€ Presenstation๋กœ์ง์ด ์•„๋‹ˆ๋‹ค.
:์œ ์ €์˜ ํ–‰๋™์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— BusinessLogic์ด ์•„๋‹ˆ๋‹ค.

3. ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ๋กœ๋“œ๋งต

์•ˆ๋“œ๋กœ์ด๋“œ ํŠธ๋ ˆ์ด๋‹ ์ฝ”์Šค, ์ฝ”๋“œ๋žฉ
์ฝ”๋“œํŒจ์Šค ์•ˆ๋“œ๋กœ์ด๋“œ ํด๋ฆฌํ”„๋…ธํŠธ

ํˆด์ฆˆ > ๋ ˆ์ด์•„์›ƒ ์ธ์ŠคํŽ™ํ„ฐ

ํ”„๋ž˜๊ทธ๋จผํŠธ ๋Œ€์‹  ๋ทฐ๋ฅผ ์žฌํ™œ์šฉ ๋‹จ์œ„๋กœ ๊ฐ€์ ธ๊ฐ€๋ฉด
ํ”„๋ž˜๊ทธ๋จผํŠธ ๋‹ค์ด์–ผ๋กœ๊ทธํ”„๋ž˜๊ทธ๋จผํŠธ, ๋ทฐํ™€๋” ๋“ฑ์— ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฑ… : ์ž๋ฐ” ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ฑ… : ์ดํ”ผ์…”๋Š ์•ˆ๋“œ๋กœ์ด๋“œ

์•ˆ๋“œ๋กœ์ด๋“œ ์ดˆ๋‹น 60ํ”„๋ ˆ์ž„ : 16ms ๋‹จ์œ„๋กœ 

๊ฐœ๋ฐœ์ž์˜ต์…˜ ํ”„๋กœํ•„ GPU ๋ Œ๋”๋ง

์•ˆ๋“œ๋กœ์ด๋“œ ํผํฌ๋จผ์Šค ํŒจํ„ด์ฆˆ 
์ฑ… : ์•ˆ๋“ค์ด๋“œ ์•ฑ ์„ฑ๋Šฅ ์ตœ์ ํ™” 

AOSP 
์ฑ… : ์ธ์‚ฌ์ด๋“œ ์•ˆ๋“œ๋กœ์ด๋“œ

์ฑ… : ํด๋ฆฐ์†Œํ”„ํŠธ์›จ์–ด
์ฑ… : ์‹ค์šฉ์ฃผ์˜ ๋””์ž์ธ ํŒจํ„ด

OOP 5๋Œ€ ์›์น™
Source Making : ๋””์ž์ธํŒจํ„ด์˜ 

์ฑ… : Functional Thinking 
์ฑ… : ํด๋ฆฐ์ฝ”๋“œ, ํด๋ฆฐ์•„ํ‚คํ…์ณ, ๋ฆฌํŒฉํ† ๋ง

์ฑ… : ํด๋ฆฐ์ฝ”๋”

4. ๋‚˜๋ˆ„๊ณ  ์ชผ๊ฐœ์ง€๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ

์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ชผ๊ฐœ๋Š” ๋ฐฉ๋ฒ•

:์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋ฏธ๋ž˜?

์•ˆ๋“œ๋กœ์ด๋“œ์˜ ์ฒ ํ•™ 4๊ฐ€์ง€ 
์˜คํ”ˆ์†Œ์Šค 
๋ชจ๋“ ์•ฑ์€ ๋™์ผํ•˜๋‹ค
์•ฑ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด
๋น ๋ฅด๊ณ  ์‰ฌ์šด ์•ฑ ๊ฐœ๋ฐœ 

๋‹ค์ด์•ค ํ•ต๋ณธ : ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋Œ€๋ชจ

์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์ข…๋ฃŒํ•  ํ•„์š”๊ฐ€ ์—†์Œ
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”
์•ฑ ์‹คํ–‰ ๋ฐ ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ์ „ํ™˜์ด ๋นจ๋ผ์•ผ ํ•จ
์„ ํƒ‘์žฌ๋˜๋Š” ์•ฑ๊ณผ ๋™์ผํ•œ ์ˆ˜์ค€์˜ API์ œ๊ณต

4๋Œ€ ์ปดํฌ๋„ŒํŠธ = Entry Point = ๋ฉ”์ธํ•จ์ˆ˜ = ์•ฑ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•
: ์™œ 4๊ฐ€์ง€ ๋‹ค๋ฅธ ์‹œ์ž‘๋ฐฉ๋ฒ•?
-> ์‚ฌ์šฉ์ž์—๊ฒŒ UI๋ฅผ ์ œ๊ณต, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—… ์ˆ˜ํ–‰, ํŠน์ • ์ด๋ฒคํŠธ์— ๋ฐ˜์‘, ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณต

platform APIs ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ 24000๋Œ€์˜ ๋””๋ฐ”์ด์Šค ํ˜ธํ™˜์„ฑ ํ™•๋ณด
CDD, CTS