์Šน๋Œ ์“ฐ๋‹ค

[์ •๋ฆฌ] ๊ทธ๋ƒฅ ์ €๋ƒฅ #์œ„ํด๋ฆฌ๋‰ด์Šค #72

seungdols 2020. 4. 5. 23:46

๐Ÿ’ป๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„์›€์ด ๋˜๋Š”

LINE ๋ฉ”์‹œ์ง• ์„œ๋ฒ„๊ฐ€ ์ƒˆํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๋Œ€๋น„ํ•˜๋Š” ๊ณผ์ • - LINE ENGINEERING

  • ๋ผ์ธ ๋ฉ”์‹ ์ €์˜ ํŠน์ดํ•œ ๋ฌธํ™” ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ "์‹ ๋…„ ๋Œ€์‘", ๋ผ์ธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ฑ…์„ ์ฝ์–ด๋ณด๋‹ˆ ๋‹ค๋“ค, 12์›” 31์ผ์— ๋ชจ์—ฌ์„œ ์‹ ๋…„ ๋Œ€์‘ ์ดํ›„ ํ‡ด๊ทผ์„ ํ•œ๋‹ค๊ณ  ํ•˜๋˜๋ฐ, ์‚ฌ์‹ค ๊ฒฝํ—˜ ํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ฌธํ™”์ด๊ธฐ๋„ ํ•˜๋‹ค. ๊ทธ๋งŒํผ ๋ผ์ธ ๋ฉ”์‹ ์ €ํŒ€์˜ ์ฃผ๋œ ์—…๋ฌด์ธ๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ๋Œ€๋น„ ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ๋‹ด๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Armeria๋ฅผ ์ ๊ทน ๋„์ž…ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๊ณ , Spring framework์™€ ๊ฐ™์ด ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ ์ด ๋งค๋ ฅ์ ์ด๊ธด ํ•˜๋‹ค. ๋ฌผ๋ก , Armeria๋Š” ๊ทธ๋ƒฅ ์ž์ฒด๋กœ ์จ๋„ ์•ˆ์ „์„ฑ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์จ ๋ณด๊ณ  ์‹ถ๊ธด ํ•˜๋‹ค.

SIํšŒ์‚ฌ์— ์ž…์‚ฌํ•˜๊ธฐ ์ „ ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€ - SI์˜ ๋‹จ์ 

  • ์—ฌ์ „ํžˆ ๋ฐ”๋€Œ์ง€ ์•Š์€ ๋ฌธํ™”์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚ด๊ฐ€ ๋Œ€ํ•™ ์กธ์—… ์ „๋ถ€ํ„ฐ๋„ "SI๋Š” ๊ฐ€์ง€ ๋ง์•„๋ผ"๋Š” ์„ ๋ฐฐ๋“ค์˜ ์กฐ์–ธ์„ ๋“ค์—ˆ๋‹ค. ์ผ๋‹จ ๊ฐ€๋Š” ์ˆœ๊ฐ„ ๊ฐœ๋ฏธ ์ง€์˜ฅ์ด๋ผ ๋น ์ ธ ๋‚˜์˜ค๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค๊ณ  ๋ง์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด๋Ÿฐ ๋ฌธํ™”๋ฅผ ๊ฐ€์ง„ ๊ณณ์— ๋‚ด๊ฐ€ ๋ฐœ์„ ๋“ค์—ฌ ๋†“์•˜๋‹ค๋ฉด, ๋‚˜๋Š” ์•„๋งˆ ๊ฐœ๋ฐœ์ž๋ฅผ ํฌ๊ธฐ ํ–ˆ์œผ๋ฆฌ๋ผ...๐Ÿ˜ญ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , SI์—๋„ ์กฐ๊ธˆ์”ฉ ๋ณ€ํ™”๋Š” ์˜ค๋Š” ์ค‘์ด๋ผ ๋ฏฟ๊ณ  ์žˆ๋‹ค.

์„ธ์ƒ์— ๋‚˜์œ ์ฝ”๋“œ๋Š” ์—†๋‹ค.

  • ์ด ๋ถ„์˜ ๋ง์ฒ˜๋Ÿผ, ๋‚˜์œ ์ฝ”๋“œ๋Š” ์—†๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ์ด๋ผ๋„, ํŒ€์›์€ ๊ทธ ์ฝ”๋“œ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์ฆ‰, ๋‚˜๋งŒ์˜ ์ฝ”๋“œ๊ฐ€ ์ •๋‹ต์€ ์•„๋‹ˆ๋ผ๋Š” ์†Œ๋ฆฌ์ด๋ฉฐ, ํด๋ฆฐ ์ฝ”๋“œ๋”๋ผ๋„, ํŒ€์›๋“ค์˜ ์ดํ•ด ์ˆ˜์ค€์ด ๊ทธ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ผ๋ฉด, ๋Œ์–ด ์˜ฌ๋ ค์ฃผ๊ฑฐ๋‚˜? ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ์ ๋‹นํ•œ ์ˆ˜์ค€์˜ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋‚˜์•„๊ฐ€๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ ํ•˜๋Š” ํŽธ์ด๋‹ค. ๊ฒฐ๊ตญ, ํŒ€์›๋“ค ๋ชจ๋‘๊ฐ€ ๊ฐ™์€ ์ˆ˜์ค€์˜ ์ฝ”๋“œ ์ƒ์‚ฐ์„ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š”๊ฒŒ ์ •๋ง ์–ด๋ ต๋‹ค.

LINE ์‹ ์ž… SW ๊ฐœ๋ฐœ์ž ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ, ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค - LINE ENGINEERING

  • LINE์—์„œ ์‹ ๊ทœ ๊ฐœ๋ฐœ์ž๋ฅผ ์ฑ„์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘๋…„๋ถ€ํ„ฐ ๊ฐœํŽธํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ์ด๋Ÿฐ ๋ณ€ํ™”๊ฐ€ ์ •๋ง ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ ํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ๋กœ ๋ณ€์งˆ ๋˜์–ด ๋ฒ„๋ฆฐ, SW ๊ฐœ๋ฐœ์ž ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์ด๋ ‡๊ฒŒ ์‹ค์งˆ์ ์ธ ๋ฌธ์ œ๋กœ ๋ณ€ํ™” ํ•˜๋Š” ๊ฒƒ์€ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ ํ•˜๊ณ , ๋‹ค๋ฅธ ํšŒ์‚ฌ๋“ค๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ์—์„œ ๋ฒ—์–ด ๋‚ฌ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

๋‹ค ํ•จ๊ป˜ TDD

  • TDD๋Š” ์‰ฝ์ง€ ์•Š์€ ์˜์—ญ์ด๊ธด ํ•˜๋‹ค. ์Šต๊ด€์˜ ์˜์—ญ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์งœ๊ณ  ์‹ถ์–ด ํ•œ๋‹ค. (๋ฌผ๋ก , ๊ทธ๋ ‡์ง€ ์•Š์€ ์‚ฌ๋žŒ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค.) ์กฐ๊ธˆ์”ฉ ํ›ˆ๋ จ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ ํ•˜๋Š” ํŽธ์ด๊ณ , TDD ๋ณด๋‹ค๋Š” ๋ถ€๋‹ด๊ฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค. ๋‚ด ์ƒ๊ฐ์€ ๊ตฌํ˜„์ฒด๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•ด๋„ ์ข‹๋‹ค. ๋‹ค๋งŒ, ํ•ด๋‹น ๊ตฌํ˜„์ฒด๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋‚˜์™€ ๋‚ด ๋™๋ฃŒ๊ฐ€ ๊ฐ™์ด ์Œ“์•„ ์˜ฌ๋ฆฌ๋Š” ๊ณต๊ฐ„์— ๋ณด๊ด€ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๐Ÿ’ปJava

Java ์˜ˆ์™ธ์ฒ˜๋ฆฌ ( feat. Effective java )

  • ๋งค๋ฒˆ ์•„๋Š” ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ด์ง€๋งŒ, ๋ง‰์ƒ ๋‚ด๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ํ•˜๊ณ  ์žˆ๋Š”๊ฑด๊ฐ€? ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. ๋‹ค์‹œ ์ข€ ๋ด์•ผ ํ•  ์ฑ…์€ Effective Java 3ํŒ์ธ๊ฐ€...!

ํ† ๋น„์˜ ๋ด„์„ ๋‹ด์€ ์ œ๋„ค๋ฆญ 1ํŽธ

  • Java Generics์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ์ •๋ง ์ž˜ ํ•ด์ฃผ์…จ๋‹ค. ๋‚˜๋„ ๋ดค๋˜ ๋‚ด์šฉ๋“ค์ธ๋ฐ๋„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋‹ˆ, ์žŠํ˜€์ง„๋‹ค. ๋‹ค์‹œ ๋ณต์Šต ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

ํ† ๋น„์˜ ๋ด„์„ ๋‹ด์€ ์ œ๋„ค๋ฆญ 2ํŽธ ๋žŒ๋‹ค์™€ ์ธํ„ฐ์„น์…˜

  • ๋žŒ๋‹ค์™€ ์ธํ„ฐ์„น์…˜์˜ ๊ฐœ๋…์„ ์ •๋ฆฌ ํ•œ ๊ธ€์ธ๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์ดํ•ด๊ฐ€ ์‰ฝ์ง€ ์•Š๋‹ค. ๊ณ„์† ๋ด๋„ ๋ด๋„ Java๋ฅผ ์ €๋ ‡๊ฒŒ ์“ฐ๋Š”๊ฑฐ๊ตฌ๋‚˜ ์‹ถ๊ธฐ๋„ ํ•˜๋‹ค.

์กฐ๊ธˆ ๋” ๊ดœ์ฐฎ์€ Rest Template 1๋ถ€ - Retryable

  • Retryable์„ ์ด์šฉํ•œ Rest Template์„ ์†Œ๊ฐœ ํ•˜๋Š” ๊ธ€์ด๋‹ค. ์‚ฝ์งˆํ•œ ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์†Œ๊ฐœ ํ•˜๊ณ  ์žˆ๋‹ค.

์กฐ๊ธˆ ๋” ๊ดœ์ฐฎ์€ Rest Template 2๋ถ€ - Circuit-breaker

  • Circuit-breaker์— ๋Œ€ํ•ด ์„ค๋ช… ํ•˜๋Š” ๊ธ€์ด๋ฉฐ, ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ˆ์‹œ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์–ด์„œ ๋”ฐ๋ผ ํ•˜๊ธฐ ์‰ฝ๋‹ค.

Learning Functional Programming with JavaScript - Anjana Vakil - JSUnconf

  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์„ ์ž˜ ์„ค๋ช… ํ•ด์ฃผ์‹œ๊ณ , ๋ฐœํ‘œ์ž๊ฐ€ ์•Ž๊ณผ ๋ชจ๋ฆ„์— ๋Œ€ํ•ด ์ •ํ™•ํ•˜๊ฒŒ ์ž˜ ๊ตฌ๋ถ„ ํ•˜์‹œ๋Š” ๋ถ€๋ถ„์ด ์ข‹์•˜๊ณ , ์ข‹์€ ๋ ˆํผ๋Ÿฐ์Šค๋ž‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์†Œ๊ฐœ ํ•ด์ฃผ์…จ๋‹ค.

An introduction to functional programming

  • ์œ„์˜ ์œ ํˆฌ๋ธŒ ์˜์ƒ์—์„œ ๋„์›€์„ ๋งŽ์ด ๋ฐ›์•˜๋‹ค๊ณ  ํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ์„ค๋ช…๊ธ€์ด๋‹ค. ์กฐ๊ธˆ ๊ธธ์ง€๋งŒ, ๋„์›€์ด ๋งŽ์ด ๋œ๋‹ค.

naver/fe-news

  • ๋„ค์ด๋ฒ„์—์„œ FE ๋‰ด์Šค ํ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, ์ด๋ฒˆ 4์›”์— ํ•ด๋‹นํ•˜๋Š” ๊ธ€ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๊ธ€์ด ์ข‹๊ณ , ๋ฒˆ์—ญ๋„ 5๋ฒˆ์งธ ๊ธ€๊นŒ์ง€ ๋ฒˆ์—ญ์ด ๋˜์–ด ์žˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ์œ ์ตํ•œ ๊ธ€๋“ค์ด ์žˆ๋‹ค.

๐Ÿ› Tool

'๋งค์ผ ์จ๋„ ์ข‹์„' ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ ํ™•์žฅ ๊ธฐ๋Šฅ 7๊ฐ€์ง€

  • VS Code plugin ์ถ”์ฒœ ๊ธ€์ด๋‹ค. Data preview, jumpy ๊ฐ™์€ ํˆด๋“ค์€ ์ง„์งœ ์œ ์šฉํ•ด ๋ณด์—ฌ์„œ ๋ณด์ž๋งˆ์ž ์„ค์น˜ ํ–ˆ๋‹ค. Jumpy๋Š” ์‚ฌ์‹ค vim์„ ์ž˜ ์“ฐ๋ฉด ๋ฐ”๋กœ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์ธ๋ฐ, ์‚ฌ์‹ค ๊ทธ๋ ‡๊ฒŒ vim์˜ ํ•˜๋“œ ์œ ์ €๋Š” ์•„๋‹ˆ์—ฌ์„œ ์„ค์น˜ํ•ด๋ณด์•˜๋‹ค.

mori

  • immutable.js๋Š” ์ตํžˆ ๋“ค์–ด ๋ดค์ง€๋งŒ, mori๋Š” ์ฒ˜์Œ ๋“ค์–ด ๋ณด์•˜๋‹ค. clojurescript ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ ๋˜์–ด ์žˆ๊ณ , JS๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์จ๋ด์•ผ๊ฒ ๋‹ค.
๋ฐ˜์‘ํ˜•