Post

๐Ÿ“œ ์‹ค๋ฌดํ˜• Java ๋ฐฑ์—”๋“œ ์ง‘์ค‘ ์„ฑ์žฅ ํ”Œ๋žœ ๋ฐ ํ…œํ”Œ๋ฆฟ

๐Ÿ“œ ์‹ค๋ฌดํ˜• Java ๋ฐฑ์—”๋“œ ์ง‘์ค‘ ์„ฑ์žฅ ํ”Œ๋žœ ๋ฐ ํ…œํ”Œ๋ฆฟ

์‹ค๋ฌดํ˜• Java ๋ฐฑ์—”๋“œ ์ง‘์ค‘ ์„ฑ์žฅ ํ”Œ๋žœ

ํ˜„์žฌ ๋ชฉํ‘œ:

  • ์ค‘๊ฒฌ Java ๋ฐฑ์—”๋“œ ์ด์ง
  • ์‹ค๋ฌดํ˜• ๊ฐœ๋ฐœ์ž ํฌ์ง€์…”๋‹ ๊ฐ•ํ™”
  • Java/Spring ๋‚ด๋ถ€ ๋™์ž‘ ์ดํ•ด
  • ์šด์˜/์žฅ์•  ๋Œ€์‘ ๊ด€์  ๊ฐ•ํ™”

๋ฐฉํ–ฅ์€ ๋ช…ํ™•ํ•˜๋‹ค.

โ€œ์ฝ”ํ…Œโ€๋ณด๋‹ค โ€œ์‹ค๋ฌด ์ดํ•ด๋„โ€

์— ์ง‘์ค‘ํ•œ๋‹ค.

์ฆ‰:

  • Java ๋‚ด๋ถ€ ๊ตฌ์กฐ
  • Spring ๋™์ž‘ ์›๋ฆฌ
  • DB/ํŠธ๋žœ์žญ์…˜
  • ์šด์˜/์žฅ์•  ๋Œ€์‘
  • ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‚ฌ๊ณ 

๋ฅผ ๊นŠ๊ฒŒ ๊ฐ€์ ธ๊ฐ„๋‹ค.


์šด์˜ ๋ฐฉ์‹

์ฃผ 5๊ฐœ ์ฃผ์ œ

  • ํ•˜๋ฃจ 1๊ฐœ ๊นŠ๊ฒŒ
  • ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ ๊ฐ€๋Šฅ ์ˆ˜์ค€
  • ๋ฉด์ ‘ ๋‹ต๋ณ€ ๊ฐ€๋Šฅ ์ˆ˜์ค€

๊นŒ์ง€ ํ•™์Šต.


ํ•™์Šต ๋ชฉํ‘œ

๋‹จ์ˆœ ์ •์˜ ์•”๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ:

  • ์™œ ์ด๋ ‡๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋Š”๊ฐ€?
  • ์–ด๋–ค Trade-off๊ฐ€ ์กด์žฌํ•˜๋Š”๊ฐ€?
  • ์šด์˜์—์„œ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?
  • ์™œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

๋ฅผ ์„ค๋ช… ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€๊นŒ์ง€ ๊ฐ„๋‹ค.


1์ฃผ์ฐจ - Java Core + JVM + ๋™์‹œ์„ฑ

๋ชฉํ‘œ:

Java ๋‚ด๋ถ€ ๊ตฌ์กฐ ์ดํ•ด ๊ธฐ๋ฐ˜ ํ™•๋ณด


Day1

๊ฐ์ฒด ์ƒ์„ฑ ๊ณผ์ •๊ณผ JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

  • Heap / Stack
  • Method Area
  • GC Root
  • ๊ฐ์ฒด ์ƒ๋ช…์ฃผ๊ธฐ
  • ์™œ Heap์€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์ธ๊ฐ€?

Day2

ClassLoader์™€ JVM ์‹คํ–‰ ๊ตฌ์กฐ

  • Loading / Linking / Initialization
  • ๋ถ€๋ชจ ์œ„์ž„ ๋ชจ๋ธ
  • Runtime Dynamic Loading
  • Reflection ์—ฐ๊ฒฐ

Day3

GC ๋™์ž‘ ์›๋ฆฌ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

  • Young / Old
  • STW
  • Minor / Major GC
  • G1GC
  • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜

Day4

Collection Framework์™€ HashMap ๋‚ด๋ถ€ ๊ตฌ์กฐ

  • collision
  • resize
  • load factor
  • ConcurrentHashMap
  • CAS

Day5

Thread / synchronized / volatile / Atomic

  • Race Condition
  • Memory Visibility
  • CAS
  • Lock
  • ThreadLocal leak

2์ฃผ์ฐจ - Spring ๋‚ด๋ถ€ ๋™์ž‘

๋ชฉํ‘œ:

Spring๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช… ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€ ํ™•๋ณด


Day1

Spring Bean Lifecycle


Day2

DI / IoC / BeanFactory / ApplicationContext


Day3

Spring AOP์™€ Proxy


Day4

@Transactional ๋‚ด๋ถ€ ๋™์ž‘


Day5

Spring MVC ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„


3์ฃผ์ฐจ - JPA + DB + ํŠธ๋žœ์žญ์…˜

๋ชฉํ‘œ:

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ์„ฑ๋Šฅ ์ดํ•ด


Day1

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ Dirty Checking


Day2

N+1 ๋ฌธ์ œ์™€ Fetch ์ „๋žต


Day3

Transaction๊ณผ Isolation Level


Day4

์ธ๋ฑ์Šค์™€ ์‹คํ–‰ ๊ณ„ํš


Day5

Connection Pool๊ณผ DB ์„ฑ๋Šฅ


4์ฃผ์ฐจ - ์šด์˜ / ์žฅ์•  ๋Œ€์‘ / ์‹œ์Šคํ…œ ์„ค๊ณ„

๋ชฉํ‘œ:

์‹ค๋ฌดํ˜• ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ํฌ์ง€์…”๋‹ ์™„์„ฑ


Day1

TCP / HTTP / Keep-Alive


Day2

Redis ์บ์‹œ ์ „๋žต๊ณผ ์žฅ์•  ์‚ฌ๋ก€


Day3

๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์ „๋žต


Day4

์žฅ์•  ๋Œ€์‘๊ณผ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…


Day5

์‹ค์ „ ๋ฉด์ ‘ ์••๋ฐ• ์งˆ๋ฌธ ๋Œ€์‘


ํ•ต์‹ฌ ์ „๋žต

์•ž์œผ๋กœ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฑด:

โ€œ์™œ ๊ทธ๋ ‡๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋Š”๊ฐ€?โ€

๋ฅผ ๊ณ„์† ํŒŒ๊ณ ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋“œ์‹œ:

  • ์šด์˜ ๊ด€์ 
  • ์„ฑ๋Šฅ ๊ด€์ 
  • ์žฅ์•  ์‚ฌ๋ก€
  • Trade-off

๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ํ•™์Šตํ•œ๋‹ค.

์ด๊ฒƒ์ด: โ€œ๊ฐ•ํ•œ ์‹ค๋ฌดํ˜• ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์žโ€ ๋А๋‚Œ์„ ๋งŒ๋“ ๋‹ค.


์‹ค๋ฌดํ˜• Java Backend ์‹ฌํ™” ํ•™์Šต ํ…œํ”Œ๋ฆฟ v4

์•ž์œผ๋กœ์˜ ๋ชฉํ‘œ๋Š”:

โ€œ์ฝ”ํ…Œํ˜• ๊ฐœ๋ฐœ์žโ€

๊ฐ€ ์•„๋‹ˆ๋ผ,

โ€œ์‹ค๋ฌดํ˜• Java ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์žโ€

์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ:

  • ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ์„ค๊ณ„ ์ด์œ 
  • ์žฅ์•  ์‚ฌ๋ก€
  • ์„ฑ๋Šฅ
  • ์šด์˜ ๊ด€์ 

์ค‘์‹ฌ์œผ๋กœ ํ•™์Šตํ•œ๋‹ค.


์ถ”์ฒœ ์š”์ฒญ ํ…œํ”Œ๋ฆฟ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
์˜ค๋Š˜์€ [N์ฃผ์ฐจ M์ผ์ฐจ] ํ•™์Šต์ด์•ผ.

ํ˜„์žฌ ์ฃผ์ฐจ ๋ชฉํ‘œ๋Š”:
[ํ˜„์žฌ ์ฃผ์ฐจ ๋ชฉํ‘œ]

์˜ค๋Š˜ ํ•™์Šต ์ฃผ์ œ๋Š”:
[์˜ค๋Š˜์˜ Java/Spring/CS ์ฃผ์ œ]

๋ชฉํ‘œ๋Š”:
- ์ค‘๊ฒฌ Java ๋ฐฑ์—”๋“œ ๋ฉด์ ‘ ๋Œ€๋น„
- ์‹ค๋ฌดํ˜• ์ดํ•ด
- ์šด์˜ ๊ด€์  ์ดํ•ด
- ์žฅ์•  ๋Œ€์‘ ์‚ฌ๊ณ  ๊ฐ•ํ™”

์•„๋ž˜ ๋‚ด์šฉ์„ ํฌํ•จํ•ด์„œ ์„ค๋ช…ํ•ด์ค˜.

1. ํ•ต์‹ฌ ๊ฐœ๋…
2. ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ
3. ์™œ ์ด๋ ‡๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋Š”๊ฐ€?
4. ์‹ค๋ฌด ์‚ฌ์šฉ ์‚ฌ๋ก€
5. ์„ฑ๋Šฅ ๊ด€์ 
6. Trade-off ์‹ฌํ™”
7. ์‹ค์ œ ์žฅ์•  ์‚ฌ๋ก€
8. ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜
9. ๋ฉด์ ‘ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ
10. ์ข‹์€ ๋‹ต๋ณ€ ์˜ˆ์‹œ
11. ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ค‘์š”ํ•œ ํฌ์ธํŠธ
12. Java/Spring ์ฝ”๋“œ ์˜ˆ์‹œ
13. ๊ด€๋ จ CS ๊ฐœ๋… ์—ฐ๊ฒฐ
14. ํ˜„์—…์—์„œ ํŠนํžˆ ์ค‘์š”ํ•œ ํฌ์ธํŠธ
15. ํ•ต์‹ฌ ์š”์•ฝ

๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋“œ์‹œ:

- GitHub Blog(Jekyll/Hugo)์šฉ md ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ
- YAML Front Matter ํฌํ•จ
- ์ถ”์ฒœ ํŒŒ์ผ๋ช… ํฌํ•จ
- Markdown ์ „์ฒด๋Š” ``` ๋กœ ๊ฐ์‹ธ์ง€ ๋ง ๊ฒƒ
- Java ์ฝ”๋“œ๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ 4์นธ ๋ฐฉ์‹ ์‚ฌ์šฉ
- md ํŒŒ์ผ ๊ตฌ์กฐ๊ฐ€ ๊นจ์ง€์ง€ ์•Š๊ฒŒ ์ž‘์„ฑ
- md ํŒŒ์ผ ๋‚ด categories๋Š” To-Be-Senior ์ž‘์„ฑ

์ถ”๊ฐ€ ์กฐ๊ฑด:

- ๋‹จ์ˆœ ์ •์˜ ๋‚˜์—ด ๊ธˆ์ง€
- ์šด์˜/์žฅ์•  ๊ด€์  ๊ฐ•์กฐ
- "์™œ?"๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํŒŒ๊ณ ๋“œ๋Š” ๋ฐฉ์‹ ์‚ฌ์šฉ
- ๋ฉด์ ‘ ์••๋ฐ• ์งˆ๋ฌธ ๋Œ€์‘ ๊ฐ€๋Šฅ ์ˆ˜์ค€์œผ๋กœ ์„ค๋ช…
- ์‹ค๋ฌดํ˜• ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๊ด€์  ์œ ์ง€
- ์•ž์œผ๋กœ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ž˜๋ฅผ ํฌํ•จํ•ด์„œ ์ •๋ฆฌ
	- Mermaid flowchart
	- sequenceDiagram
	- stateDiagram
	- classDiagram
	- architecture diagram

ํ•ต์‹ฌ ๋ชฉํ‘œ

์ตœ์ข… ๋ชฉํ‘œ๋Š”:

โ€œ๊ธฐ์ˆ  ์‚ฌ์šฉ ๊ฒฝํ—˜โ€

์ด ์•„๋‹ˆ๋ผ,

โ€œ๊ธฐ์ˆ  ์ดํ•ด ๊ธฐ๋ฐ˜ ์„ค๋ช… ๋Šฅ๋ ฅโ€

์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

ํŠนํžˆ ์ค‘์š”ํ•œ ๊ฑด:

  • ์™œ ๊ทธ๋ ‡๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋Š”๊ฐ€?
  • ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?
  • ์™œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?
  • ์–ด๋–ค Trade-off๊ฐ€ ์กด์žฌํ•˜๋Š”๊ฐ€?

๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

This post is licensed under CC BY 4.0 by the author.