๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„

[๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ - โ“ช ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๊ฐœ๋ฐœ์ž HOON 2022. 10. 31. 14:36

 

๐Ÿ ๋ฉด์ ‘ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

 

๐Ÿ“ƒ 1. ์ž๋ฃŒ๊ตฌ์กฐ


  Array, ArrayList, LinkedList์˜ ์ฐจ์ด๋ฅผ ์•Œ๊ณ , ์ง๋ฌด ์–ธ์–ด๋กœ ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

  Stack๊ณผ Queue์— ๋Œ€ํ•ด ์•Œ๊ณ , ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง๋ฌด ์–ธ์–ด๋กœ ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Tree์™€ Heap์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๊ณ , ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง๋ฌด ์–ธ์–ด๋กœ ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Tree์˜ ์ „์œ„, ์ค‘์œ„, ํ›„์œ„ ์ˆœํšŒ ์‹œ ์ถœ๋ ฅ๋˜๋Š” ๋…ธ๋“œ ์ˆœ์„œ๋ฅผ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠธ๋ฆฌ ๊ตฌํ˜„๋ถ€ํ„ฐ ์ˆœํšŒ ๋ฉ”์†Œ๋“œ๊นŒ์ง€ ์ง๋ฌด ์–ธ์–ด๋กœ ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์šฐ์„ ์ˆœ์œ„ ํ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํ•ด์‰ฌ ํ…Œ์ด๋ธ”๊ณผ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํŠน์ •ํ•œ ์ƒํ™ฉ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•  ์ง€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐ŸŽฏ 2. ์•Œ๊ณ ๋ฆฌ์ฆ˜


  ์‹œ๊ฐ„๋ณต์žก๋„ O(N^2)์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ O(NlogN)์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง๋ฌด ์–ธ์–ด๋กœ ๋ชจ๋“ˆ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๊ฐ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ Best Case์™€ Worst Case ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ๊ณ , ๊ฐ ํŠน์„ฑ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์žฌ๊ท€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. 

  BFS/DFS์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง๋ฌด ์–ธ์–ด๋กœ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋‹ค์ต์ŠคํŠธ๋ผ, ํ”„๋ฆผ, ํ”Œ๋กœ์ด๋“œ-์™€์ƒฌ, ๋ฒจ๋งŒํฌ๋“œ, ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ ๊ทธ๋ž˜ํ”„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.

  ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ , ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’พ  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด(DDL, DML, DCL)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Index์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ •๊ทœํ™”๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์™œ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ  1~3 ์ •๊ทœํ™”๋ถ€ํ„ฐ BCNF ์ •๊ทœํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์—ญ์ •๊ทœํ™”๋Š” ๋ฌด์—‡์ด๊ณ , ์™œ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  RDBMS์™€ NoSQL์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํ…Œ์ด๋ธ” ์„ค๊ณ„๋ฅผ ์ž˜๋ชปํ•œ ๊ฒฝ์šฐ, ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ์„ ๋ณด๊ณ , RDBMS๋ฅผ ์‚ฌ์šฉํ•  ์ง€ NoSQL์„ ์‚ฌ์šฉํ•  ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํŠธ๋žœ์žญ์…˜์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ , ํŠน์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  DB Lock์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ORM์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. (SELECT, JOIN, WHERE, DELETE, GROUP BY ๋“ฑ๋“ฑ)

  DB ํ‚ค์˜ ์ข…๋ฅ˜์™€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐ŸŒŽ 4. ๋„คํŠธ์›Œํฌ


  ๋ธŒ๋ผ์šฐ์ €์— URL์„ ์ž…๋ ฅ๋ถ€ํ„ฐ ํ™”๋ฉด์— ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •์„ ์ตœ๋Œ€ํ•œ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  HTTP ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์„ค๋ช…์ด ๊ฐ€๋Šฅํ•˜๊ณ , HTTP์™€ HTTPS๊ฐ€ ๋ฌด์—‡์ด ๋‹ค๋ฅธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ฟ ํ‚ค์™€ ์„ธ์…˜, JWT Token์„ ์žฅ๋‹จ์ ๊ณผ ํ•จ๊ป˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  TCP์™€ UDP์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ๊ฐ๊ฐ ์–ด๋””์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์ข‹์€์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  3-way handshaking๊ณผ 4-way handshaking์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  OSI 7 Layer์˜ ๊ฐ ๊ณ„์ธต์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿค– 5. ์šด์˜์ฒด์ œ


  ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ ๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  DeadLock, Mutual Exclusion, Critical Section์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋‹จ์ผ ํ”„๋กœ์„ธ์„œ CPU ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.

  ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์˜ ์ฐจ์ด์™€ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. 

  Mutex์™€ Semaphore๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ , ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ๋‹ค.

  ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค, ์ž์‹ ํ”„๋กœ์„ธ์Šค, ๊ณ ์•„ ํ”„๋กœ์„ธ์Šค, ์ข€๋น„ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.

  ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ฐธ์กฐ ์ง€์—ญ์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ˜•๏ธ 6. ์ž๋ฐ”(Java)


  JVM์˜ ์—ญํ• ๊ณผ, JVM์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Java๋กœ ์›์‹œ ํƒ€์ž…, ์ฐธ์กฐ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋А ์˜์—ญ์— ํ• ๋‹น๋˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Java์˜ ์ปดํŒŒ์ผ ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Garbage Collect๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์˜ค๋ฒ„๋ผ์ด๋”ฉ๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ๊ฐ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ž˜ํผํด๋ž˜์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ถ”์ƒํด๋ž˜์Šค์™€ interface์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ Stream API์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ํ• ๋‹น๋˜๋Š” ์‹œ์ ์„ ์•Œ๊ณ  ์žˆ๋‹ค.

  Synchronized์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  new String()๊ณผ ""์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์ ‘๊ทผ ์ œํ•œ์ž๋ณ„ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.

  static๊ณผ final์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๊ณ , ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ๋„ ์„ค๋ช…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  Collections ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ค„ ์•ˆ๋‹ค.

  ์ง๋ ฌํ™”(Serialize)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋ฉ”๋ชจ๋ฆฌ์˜ ์ƒ์ˆ˜ ํ’€ ์˜์—ญ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ๋‹ค.

  SerialVersionUID๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์˜ ํŠน์ง•์„ ๋ชจ๋‘ Java ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿƒ 7. ๋ฐฑ์—”๋“œ(Spring)


  Spring Framework์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค, Spring Boot์™€ Spring์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  DI์™€ IoC, IoC Container(DI Container)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  POJO๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  SpringMVC์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ , MVC๊ฐ€ ์–ด๋–ค ํ๋ฆ„์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Spring Bean๊ณผ Bean์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ผ์ดํ”„ ์‚ฌ์ดํด์ด ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌ๋˜๋Š”์ง€ ์„ค๋ช… ๊ฐ€๋Šฅํ•˜๋‹ค.

  AOP, PSA๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  DAO, DTO, VO, BO๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  JPA๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ , ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ์ข‹์„ ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Servlet์ด ๋ฌด์—‡์ธ์ง€, ๋™์ž‘๋ฐฉ์‹์€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Spring์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ , ์Šคํ”„๋ง์—์„œ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•  ๊ฒƒ์ธ์ง€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค.

  API๊ฐ€ ๋ฌด์—‡์ธ์ง€, RestAPI์™€ RestFUL API๋Š” ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  @Controller์™€ @RestController์˜ ์ฐจ์ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  @RequestBody์™€ @Requestparam, @ ModelAttribute์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ฐœ์ธ ํฌํŠธํด๋ฆฌ์˜ค ๊ด€๋ จ ์งˆ๋ฌธ


  Spring WebFlux ์‚ฌ์šฉ์˜ ์ด์ , WebFlux์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  JPA N+1 ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ , ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

  Spring Batch๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ์™€, Job๊ณผ Step์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Spring Security์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ณต์žกํ•˜๊ณ  ๋™์ ์ธ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค.

  MySQL ํ™˜๊ฒฝ์—์„œ์˜ JPA Bulk Insert ์ ์šฉ์‹œ ์ฑ„๋ฒˆ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.

 

๐Ÿ’๐Ÿป 8. ๊ฐœ๋ฐœ๊ณตํ†ต / ์ธ์„ฑ๋ฉด์ ‘


  ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์‹œ ์ธ์ž ์ „๋‹ฌ ๋ฐฉ์‹์ธ Call by Value์™€ Call by Reference์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์ž์‹ ์˜ ์ง๋ฌด ์–ธ์–ด๋Š” ์–ด๋–ค ์ „๋‹ฌ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋Š”์ง€ ์„ค๋ช… ๊ฐ€๋Šฅํ•˜๋‹ค.

  ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช… ๊ฐ€๋Šฅํ•˜๋‹ค.

  ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  TDD์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  DDD์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  MSA๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  Event Driven Architecture์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  AWS EC2์™€ AWS Lambda์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ๋„์ปค์˜ ์ž‘๋™์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ธ์„ฑ๋ฉด์ ‘์€ ์ถ”ํ›„ ์—…๋ฐ์ดํŠธ.

 

๐Ÿƒ‍โ™‚๏ธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ณ„ ์งˆ๋ฌธ ๋Œ€๋น„ ์ž๋ฃŒ

[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘  ์ž๋ฃŒ๊ตฌ์กฐ
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ก ์•Œ๊ณ ๋ฆฌ์ฆ˜
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ข ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ฃ ๋„คํŠธ์›Œํฌ
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ค ์šด์˜์ฒด์ œ
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ฅ ์ž๋ฐ”(Java)
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ฆ ๋ฐฑ์—”๋“œ(Java Spring ๊ธฐ๋ฐ˜)
[๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„] - [๋ฉด์ ‘์ด์ •๋ฆฌ] ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ๋Œ€๋น„ ์ด์ •๋ฆฌ ์ž๋ฃŒ - โ‘ง ๊ฐœ๋ฐœ๊ณตํ†ต / ์ธ์„ฑ๋ฉด์ ‘