๐ ์ค๋ฌดํ 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๊ฐ ์กด์ฌํ๋๊ฐ?
๋ฅผ ์ฐ๊ฒฐํด์ ์ค๋ช ํ๋ ๊ฒ์ด๋ค.