Skip to content

๐Ÿ› ๏ธ ์šฐ๋ฆฌ๊ฐ€ ์„ ํƒํ•œ ๊ธฐ์ˆ ์Šคํƒ

๊น€์ง€ํ˜„ edited this page Oct 25, 2023 · 2 revisions

๋ฐฑ์—”๋“œ

Spring Boot 3.1.1

  • JavaEE -> JakartaEE 3.0 ์ด์ „ ๋ฒ„์ „์„ 3.0 ์ดํ›„ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋งŽ์€ ํŒจํ‚ค์ง€๋ช…์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•ด์„œ 3.0 ๋ฒ„์ „์„ ๊ณจ๋ž๋‹ค
  • [ 3(major).x(minor).x(patch) ] ๋ฒ„๊ทธ ์ˆ˜์ •์„ ๋งŽ์ด ํ•œ 3.0.8์„ ์„ ํƒํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋Œ๋ฆด ๋•Œ 3.0.8์€ ์—๋Ÿฌ ๋ฐœ์ƒํ•˜์—ฌ 3.1.1์„ ์„ ํƒํ•˜์˜€๋‹ค.

AWS corretto 17

  • ์Šคํ”„๋ง ๋ถ€ํŠธ 3.x๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด JDK ๋ฒ„์ „ 17์ด์ƒ์ด ํ•„์š”ํ–ˆ๋‹ค
  • Record๋ฅผ ์‚ฌ์šฉํ•จ.
  • AWS EC2๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šคํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ, AWS์—์„œ ์ œ๊ณตํ•˜๋Š” JDK์ธ corretto ์„ ํƒํ•˜์˜€๋‹ค

MySQL

  • ๋ฌด๋ฃŒ์ด๋ฉฐ ์„ค์น˜๊ฐ€ ์‰ฝ๋‹ค
  • ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์šฉ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์‰ฌ์› ๋‹ค.
  • ํŒ€์› ๋ชจ๋‘๊ฐ€ ec2๋กœ MySQL์„ ๋‹ค๋ค„๋ณธ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ ๋„์ž…ํ•˜๊ธฐ ๊ฐ€์žฅ ์‰ฌ์› ๋‹ค.

H2

  • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ฒฉ๋ฆฌํ•˜๊ธฐ ์‰ฝ๋‹ค
  • ๊ฒฝ๋Ÿ‰์ด๋ฉฐ ์„œ๋ฒ„ ์—†์ด ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค
  • ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

JPA Hibernate

  • ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์ด ๋งŽ์€ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•˜๋‹ค.

RestDocs

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ์‹ ๋ขฐ์„ฑ์ด ๋ณด์žฅ๋˜๊ณ  ๋Š˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ

Glide

  • ์•ˆ๋“œ๋กœ์ด๋“œ ํŒ€์› ์ „์›์ด ์‚ฌ์šฉ ๊ฒฝํ—˜์ด ์žˆ์–ด, ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ๊ฐ„์ด ์ ˆ์•ฝ๋˜๊ณ , โ€จ์„œ๋กœ์˜ ์ฝ”๋“œ ์ดํ•ด๊ฐ€ ์šฉ์ดํ•ด์ง„๋‹ค.
  • Picasso ๋“ฑ์˜ ๊ธฐํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋น„๊ตํ•˜์—ฌ, ์ „๋‹ฌ๋ฐ›์€ ์ด๋ฏธ์ง€๋ทฐ์˜ ํฌ๊ธฐ๋งŒํผ โ€จ๋ฆฌ์‚ฌ์ด์ง•์ด ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ์ ๊ฒŒ ์ฐจ์ง€ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ™”์งˆ์ด ๋–จ์–ด์งˆ ์ˆ˜๋Š” ์žˆ์œผ๋‚˜, ์ด ์•ฑ์—์„œ๋Š” ๊ตณ์ด ์›๋ณธ ๊ณ ํ™”์งˆ์„ ๊ณ ์ง‘ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ glide๋Š” .gif๋ฅผ ์ง€์›ํ•˜๋Š”๋ฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ ํŠน์„ฑ ์ƒ .gif ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  ์‹ถ์€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ ํ•ฉํ•˜๋‹ค.

MVVM

  • MVP๋Š” Presenter์™€ View๊ณผ 1:1 ๊ด€๊ณ„์— ๊ด€ํ•œ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— View๊ฐ€ ๋ฐ”๋€Œ๋ฉด Presenter๋„ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.
  • MVVM์˜ ๊ฒฝ์šฐ๋Š” View์™€ ViewModel ์‚ฌ์ด์—์„œ View๊ณผ ViewModel์—๋งŒ ์˜์กด์„ฑ์„ ๊ฐ–๊ฒŒ ํ•˜๊ณ , ViewModel์— ๋Œ€ํ•œ ์˜์กด์„ฑ์€ ๊ฐ€์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— View๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ViewModel์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

kotlinx-serialization

  • Json, Moshi ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‹ค๋ฅด๊ฒŒ non-null ๋ณ€์ˆ˜์— null์ด ๋“ค์–ด๊ฐ€๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  • ํ•ด๋‹น ๋ณ€์ˆ˜์— ํ”„๋กœํผํ‹ฐ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ์„ ํ™•์ธํ•ด์„œ null ๋Œ€์‹  ๊ธฐ๋ณธ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

Coroutine

  • ๋น„๋™๊ธฐ์  ์ฒ˜๋ฆฌ๋ฅผ ๋™๊ธฐ์ ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์–ด ์†Œ์œ„ ์ฝœ๋ฐฑ ์ง€์˜ฅ ํƒˆ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ž์ฒด์ ์ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜์—ฌ ์ง๊ด€์ ์ด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

Retrofit2

  • Volley ๋“ฑ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  • converter ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ํŒŒ์‹ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹ค์–‘ํ•œ annotation์„ ์ง€์›ํ•˜์—ฌ Rest Api๋ฅผ ์ง๊ด€์ ์ด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ โ€จ์žˆ๋‹ค.

OkHttp Interceptor

  • HttpLoggingInterceptor๋กœ ์š”์ฒญ/์‘๋‹ต ๋‚ด์šฉ ๋ฐ ํ—ค๋”, ํ†ต์‹  ํƒ€์ด๋ฐ ๋“ฑ์˜ โ€จ๊ธฐ๋ก๋“ค์„ ๋กœ๊ทธ๋กœ ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์–ด ๋””๋ฒ„๊น…์ด ์šฉ์ดํ•˜๋‹ค.
  • ๋˜ํ•œ, ๊ณตํ†ต ํ—ค๋”์— ๋กœ๊ทธ์ธ ์ •๋ณด ๋“ฑ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.