- ์ด๊ธฐ ํ์๋ค์ ๋ค์ํ ๊ด์ฌ์ฌ์์ ์ถ๋ฐํ ์ฌ๋ฌ ์์ด๋์ด :
- ๊ฐ์ธ ์ํ์ ๋ง์ถ ๊ฑด๊ฐ ์ํ ์ถ์ฒ ํ๋ซํผ
- ๋น๊ฑด ๋จ๊ณ๋ณ ๋์ฒด ์ก๋ฅ ์๊ฐ ํ๋ซํผ
- ํผ์ค๋ ์ปฌ๋ฌ์ ๋ฐ๋ฅธ ๋ง์ถค ์ํ ์ถ์ฒ ํ๋ซํผ
- ๋ฐ๋ ค๋๋ฌผ ์๊ฐํ ํ๋ซํผ
- ์นตํ ์ผ ๋ ์ํผ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ ์ถ์ฒ ํ๋ซํผ
- ์นตํ ์ผ ์๋น์ค ํ๋ซํผ ์ ์ ์ด์
- ์ ๊ทผ์ด ์ฉ์ดํ ๋ฐ์ดํฐ
- AWS๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง ๊ธฐ๋ฐ ์๋น์ค์์ ์ฐ๊ณ ๊ฐ๋ฅ์ฑ
- ๊ฐ์์์ ๋ฐฐ์ด ๊ธฐ์ ํ์ฉ ๊ธฐํ
- ์ ์ฌ ์๋น์ค ๋ถ์กฑ์ผ๋ก ์ฐจ๋ณํ ๊ฐ๋ฅ
- ๋ค์ํ API์์ ๊ฒฐํฉ ๊ฐ๋ฅ์ฑ
- ๊ฐ์ธ ์ํ ์ ๋ณด ํ์ฉ ๋ถ๊ฐ
- ์ถ์ฒ ์ํ์ ๋ฒ์๊ฐ ์ง๋์น๊ฒ ๊ด๋ฒ์ํจ
- ๊ธฐ์กด ์๋น์ค ์์ด๋์ด์ ํฅ๋ฏธ ์ ๋ฐ ํ๊ณ
- ๋ฌธํ์ ์ ํ์ ๊ณ ๋ ค ํ์
๊ฑด์ ํ ์์ฃผ ๋ฌธํ๋ฅผ ์กฐ์ฑํ๊ณ , ๊ฐ์ธ์ ์ทจํฅ์ ๋ง์ถ ์นตํ
์ผ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ ์์ฃผ ๊ฒฝํ์ ๊ฐ์ ํ๋ ํ๋ซํผ.
์ถ๊ฐ์ ์ผ๋ก ์ฃผ๋ฅ ๋ฐ ์๋ฃ ์
๊ณ ์ข
์ฌ์๋ค์๊ฒ ์ ์ฉํ ์ ๋ณด์ ๋ง์ผํ
ํ๋ซํผ ์ ๊ณต.
-
์นตํ ์ผ ๋ ์ํผ ์กฐํ ๋ฐ ์ ๋ ฅ
- ๊ธฐ์กด ์นตํ ์ผ ๋ ์ํผ ์์ธ ์กฐํ
- ์ฌ์ฉ์ ์ฐฝ์ ๋ ์ํผ ์ ๋ ฅ ๋ฐ ๊ณต์
-
๋ง์ถคํ ์นตํ ์ผ ์ถ์ฒ
- ์์น, ๋ ์จ, ๊ณ์ ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ธํ๋ ์ถ์ฒ ์ ๊ณต
- ํฅํ MBTI, ํผ์ค๋์ปฌ๋ฌ ํ์ฉ ์ถ์ฒ ๊ธฐ๋ฅ ๋์ ๊ณํ
-
์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ
- ์ข์์, ํ๋ก์ฐ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉ์ ๊ฐ ์ํธ์์ฉ ์ด์ง
- ๋ ์ํผ ๊ณต์ ๋ฐ ํ๊ฐ ํ๋ซํผ
-
์์ธ ๊ฒ์ ๊ธฐ๋ฅ
- ์ฌ๋ฃ, ์ ์ ์ข ๋ฅ, ์นตํ ์ผ ํ์ ๋ฑ ์นดํ ๊ณ ๋ฆฌ ๊ฒ์
-
์ฌ์ฉ์ ์นํ์ ์ธํฐํ์ด์ค
- ์ง๊ด์ ์ธ UI/UX ์ ๊ณต
-
๊ธฐ์ ์ ํน์ง
- Amazon S3๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง ์ ์ฅ
- MongoDB์ MySQL ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ๋ค์ด๋ฒ ๋ฐ์ดํฐ๋ฉ API๋ฅผ ํตํ ์ธ๊ธฐ ์นตํ ์ผ ๋ถ์
- ์์น ๋ฐ ๋ ์จ API ํ์ฉ
-
์ฌ์ฉ์ ํธ์์ฑ ์ฆ๋
- ๋ค์ํ ๋ ์ํผ๋ฅผ ๊ฐํธํ๊ฒ ์กฐํ ๋ฐ ๊ฒ์
- ์ปค์คํ ๋ ์ํผ ์ ๋ ฅ ๋ฐ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ์ข์์์ ํ๋ก์ฐ๋ฅผ ํตํด ์ ํธ ์ฝํ ์ธ ์ถ์
-
์ปค๋ฎค๋ํฐ ํ์ฑํ
- ์ฌ์ฉ์ ๊ฐ ์ปค์คํ ๋ ์ํผ ๊ณต์ ๋ฐ ์ํต ๊ฐํ
- ๊ด์ฌ ๋ถ์ผ๊ฐ ์ ์ฌํ ์ฌ์ฉ์ ๋คํธ์ํน
-
๊ฐ์ธํ๋ ๊ฒฝํ ์ ๊ณต
- ์ข์์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ๋ง์ถคํ ์ถ์ฒ
- ๊ฐ์ธํ๋ ๋ ์ํผ ํผ๋๋ก ๋์ ๋ง์กฑ๋ ์ ๋
-
์ฝํ ์ธ ํ์ง ํฅ์
- ์ข์์ ๋ฐ ํ๋ก์ ์ ๊ธฐ๋ฐ ๋ ์ํผ ํ์ง ํ๊ฐ
- ์ธ๊ธฐ ์ฝํ ์ธ ์ฐ์ ๋ ธ์ถ
- Spring Security : ์ธ์ฆ ๋ฐ ๋ฐ์ดํฐ ๋ณดํธ
- Spring Boot : ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ๊ณ ๋ ค
- JPA : ๊ฐ์ฒด์งํฅ ๋ฐ์ดํฐ ์ ๊ทผ
- Redis : ํค-๊ฐ ์ ์ฅ์ผ๋ก ์ฌ์ฉ์ ์ธ์ฆ ์ฒ๋ฆฌ
- MySQL & MongoDB : ๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์ ์ฐ์ฑ
- JWT: Spring Security์ ํตํฉ๋ ์ธ์ฆ
- OAuth 2.0 : ์์ ๋ก๊ทธ์ธ ๋ฐ ๋ณด์ ๊ฐํ
- Docker : ๊ฒฝ๋ ๊ฐ์ํ๋ก ํ๊ฒฝ ์ค์ ๋จ์ํ
- Gradle : ์ ์ฐํ ์์กด์ฑ ๊ด๋ฆฌ
- GitHub: ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ํ์
- GitHub Actions: ๋น๋ ๋ฐ ํ ์คํธ ์๋ํ
- AWS: ์๋ฒ ๋ฐฐํฌ ๋ฐ ํด๋ผ์ฐ๋ ์๋น์ค ํ์ฉ
- IntelliJ IDEA: ํ๋ก์ ํธ ๊ฐ๋ฐ ๋ฐ ๊ด๋ฆฌ
- Visual Studio Code: ๋ฌธ์ ๋ฐ ํ๊ฒฝ ์ค์ ํ์ผ ๊ด๋ฆฌ
- Python IDLE: ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- Slack: ์ค์๊ฐ ๊ธฐ๋ก ๋ฐ ํ์
- Discord: ์์ฑ ๋ํ ๋ฐ ํ์ผ ๊ณต์
- Notion: ๋น์ฆ๋์ค ๋ก์ง ๋ฐ ์ค๊ณ ๊ณต์
- ์ ํจ์น (PM): JWT ์ธ์ฆ, ์ด๊ธฐ ์ค์ , CI/CD
- ์์ฌ์ฐ (PS): ์ฌ์ฉ์ ๋ ์ํผ, ๊ณตํต ์๋ต ์ฒ๋ฆฌ
- ๊ฐ์ ์ (CR): ํ์ ์ ๋ณด ๊ด๋ฆฌ, ์ด๋ฏธ์ง ์ฒ๋ฆฌ
- ๊น์ํ (CM): ๋ฐ์ดํฐ ๋ถ์, ๊ธฐ๋ณธ ๋ ์ํผ
- ๋ค์ด๋ฐ ๊ท์น:
- Class: PascalCase
- Variable: camelCase
- Constant: UPPER_CASE
- Git ์ ๋ต: GitHub-Flow
- ๋ค์ฌ์ฐ๊ธฐ: 4 Space
- ๊ธฐ์ ๋ฌธ์: ๋ ธ์ ์ ๊ธฐ๋ก
- ๋ณด๊ณ ์ ์์ฑ:
- Slack, GitHub ๊ธฐ๋ก ์ ๋ฆฌ ํ ๋ ธ์ ์ ์์ฑ
- ์ต์ข ๋ณด๊ณ ์ ์ ์ถ ๋ฐ ๊ธฐ๋ก ๋ณด๊ด
์ด ๊ฐ์ด๋๋ Grafana๋ฅผ ์ฌ์ฉํ JVM ๋ชจ๋ํฐ๋ง์ ์ฃผ์ ์งํ์ ํด์ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- Heap ์์ญ: 70% ์ดํ ์ ์ง ๊ถ์ฅ
- Non-Heap ์์ญ: 20% ์ดํ ์ ์ง ๊ถ์ฅ
์ฑ๋ฅ ์ด์ ๋ฐ์ ์ ๊ฐ์ ๋ฐฉ์:
- JVM ์ต๋ ํ ํฌ๊ธฐ ์ฆ๊ฐ ๊ฒํ
- ๋ฉ๋ชจ๋ฆฌ ๋์ ์ฌ๋ถ ํ์ธ
- GC ๋ก๊ทธ ๋ถ์์ ํตํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจํด ํ์
- ํ ๋คํ ๋ถ์์ ํตํ ๋ฌธ์ ๊ฐ์ฒด ์๋ณ
- Used/Committed ๋น์จ: 70% ์ดํ ์ ์ง ๊ถ์ฅ
- ๊ธ๊ฒฉํ ์ฆ๊ฐ/๊ฐ์ ํจํด์ด ์๋ ์์ ์ ์ธ ๊ทธ๋ํ ํํ๊ฐ ์ด์์
๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ํฐ๋ง ์ ์ฃผ์์ :
- ์ผ์์ ์ธ ํผํฌ๋ ์ ์์ผ ์ ์์ผ๋, ์ง์์ ์ธ ์ฆ๊ฐ ํจํด์ ์ฃผ์ ํ์
- ์ฃผ๊ธฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋คํ ๋ถ์์ผ๋ก ์ถ์ด ๊ด์ฐฐ ๊ถ์ฅ
- ์ ๋ฌด ์๊ฐ๋๋ณ ํจํด ๋ถ์ ํ์
-
Eden Space
- ์๋ก์ด ๊ฐ์ฒด ํ ๋น ์์ญ
- ๋น๋ฒํ GC๋ ์ ์์ ์ธ ํ์
- ์ผ์์ ์ธ ๋์ ์ฌ์ฉ๋ฅ ํ์ฉ
- ๋ชจ๋ํฐ๋ง ํฌ์ธํธ:
- ๊ฐ์ฒด ์์ฑ ์๋
- Minor GC ๋น๋
- GC ํ ํ์๋๋ ๋ฉ๋ชจ๋ฆฌ ๋น์จ
-
Survivor Space
- Minor GC ํ ์์กด ๊ฐ์ฒด ๋ณด๊ด
- Eden Space์ 10-20% ์์ค์ด ์ ์
- ๋น์ ์ ํจํด:
- Survivor ์์ญ์ ๊ธ๊ฒฉํ ์ฆ๊ฐ
- ๊ณผ๋ํ ๊ฐ์ฒด ์ด๋
-
Tenured Generation (Old Generation)
- ์ฅ๊ธฐ ์์กด ๊ฐ์ฒด ๋ณด๊ด
- ์ฌ์ฉ๋ฅ 70-75% ์ดํ ์ ์ง ๊ถ์ฅ
- Full GC ํ ์ ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ์์ ์๋งํ ์ฆ๊ฐ ํจํด์ด ์ด์์
- ๋ชจ๋ํฐ๋ง ํฌ์ธํธ:
- Full GC ๋น๋
- GC ํ ๋ฉ๋ชจ๋ฆฌ ํ์์จ
- ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ ์๋
-
Metaspace
- ํด๋์ค ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
- ์ด๊ธฐ ๋ก๋ฉ ํ ์์ ํ๋์ด์ผ ํจ
- ๊ธ๊ฒฉํ ์ฆ๊ฐ ํจํด์ ๋น์ ์
- ์ฃผ์์ฌํญ:
- ๋์ ํด๋์ค ๋ก๋ฉ์ด ๋ง์ ๊ฒฝ์ฐ ์ฆ๊ฐํ ์ ์์
- ๋ฉ๋ชจ๋ฆฌ ๋ฆญ ๊ฐ๋ฅ์ฑ ์ฃผ์
-
Compressed Class Space
- Klass ํฌ์ธํฐ ์ ์ฅ ์์ญ
- 80% ์ดํ ์ ์ง ๊ถ์ฅ
- ์์ ์ ์ธ ์์ค ์ ์ง ํ์
- ์ ์ฅ ์ ๋ณด:
- ํด๋์ค ์ด๋ฆ
- ์์ ๊ด๊ณ
- ๋ฉ์๋ ํ ์ด๋ธ
- ํ๋ ์ ๋ณด
- ์ ๊ทผ ์ ์ด์
- ์ธํฐํ์ด์ค ์ ๋ณด
-
Code Cache
- ์ธ ๊ฐ์ง ์์ญ์ผ๋ก ๊ตฌ๋ถ:
- non-nmethods: JVM ์ด์์ฉ ๋ด๋ถ ์ฝ๋
- profiled nmethods: ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋์ ์ต์ ํ ์ฝ๋ (Level 1-3)
- non-profiled nmethods: ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋์ ์ปดํ์ผ ์ฝ๋ (Level 4)
- ReservedCodeCacheSize์ 80% ์ดํ ์ ์ง ๊ถ์ฅ
- ๋ชจ๋ํฐ๋ง ํฌ์ธํธ:
- JIT ์ปดํ์ผ ๋น๋
- ์ฝ๋ ์บ์ ์ฌ์ฉ๋ ์ฆ๊ฐ ํจํด
- ์ต์ ํ ๋ ๋ฒจ๋ณ ๋ถํฌ
- ์ธ ๊ฐ์ง ์์ญ์ผ๋ก ๊ตฌ๋ถ:
-
Minor GC (Young GC)
- ์ฃผ๊ธฐ์ ๋ฐ์ ์ ์
- ๊ธ๊ฒฉํ ์ฆ๊ฐ ํจํด์ ์ฃผ์ ํ์
- ๋ชจ๋ํฐ๋ง ํฌ์ธํธ:
- ๋ฐ์ ๋น๋
- ์ํ ์๊ฐ
- ํ์๋ ๋ฉ๋ชจ๋ฆฌ์
-
Major GC (Full GC)
- ๋๋ฌผ๊ฒ ๋ฐ์ํด์ผ ์ ์
- ํํํ ๊ทธ๋ํ ์ ์ง ํ์
- ์ฃผ์์ฌํญ:
- ๋น๋ฒํ Full GC๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์์ฌ
- ์ฅ์๊ฐ Full GC๋ ์ฑ๋ฅ ์ ํ ์ ๋ฐ
- Minor GC: 10-50ms ์ ์ ๋ฒ์
- Major GC: 100ms-1s ์ ์ ๋ฒ์
- ์ด๊ณผ ์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ์ ์ค์ง ๋ฐ์ ๊ฐ๋ฅ
- ์ต์ ํ ๋ฐฉ์:
- GC ์๊ณ ๋ฆฌ์ฆ ํ๋
- ํ ์ฌ์ด์ฆ ์กฐ์
- GC ๋ก๊ทธ ์์ธ ๋ถ์
- Allocated: Eden ์์ญ ์ ๊ท ํ ๋น๋
- Promoted: Old ์์ญ ์น๊ฒฉ๋
- Promoted๋ Allocated๋ณด๋ค ํ์ ํ ๋ฎ์์ผ ์ ์
- ๋ชจ๋ํฐ๋ง ํฌ์ธํธ:
- ๊ฐ์ฒด ์์ฑ ์๋
- ์น๊ฒฉ ๋น์จ
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจํด
- ์ด๊ธฐ ๊ธ์ฆ ํ ์์ ํ๊ฐ ์ ์
- ๊ฐํ์ ์ํญ ์ฆ๊ฐ๋ ํ์ฉ
- ์ง์์ ์ฆ๊ฐ๋ ๊ธ๊ฒฉํ ๋ณ๋์ ๋น์ ์
- ์ฃผ์์ฌํญ:
- ๋์ ํด๋์ค ๋ก๋ฉ ํจํด ํ์ธ
- ๋ฉ๋ชจ๋ฆฌ ๋ฆญ ๊ฐ๋ฅ์ฑ ์ ๊ฒ
- ํด๋์ค๋ก๋ ๊ณ์ธต ๊ตฌ์กฐ ๊ฒํ
- Major GC์ ์ฐ๊ณํ์ฌ ๋ฐ์
- ๊ฐํ์ ๋ฐ์, ๋ฎ์ ์์ค ์ ์ง๊ฐ ์ ์
- ๋น๋ฒํ๊ฑฐ๋ ๋๋ ์ฒ๋ฆฌ๋ ๋น์ ์
- ๋ชจ๋ํฐ๋ง ํฌ์ธํธ:
- ์ธ๋ก๋ ๋น๋
- ํ ๋ฒ์ ์ธ๋ก๋๋๋ ํด๋์ค ์
- GC ๋ฐ์๊ณผ์ ์ฐ๊ด์ฑ
- I/O ์์ ์ฉ ๋ค์ดํฐ๋ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์ด๊ธฐ ํ ๋น ํ ์์ ์ ์ ์ง ํ์
- ๊ธ๊ฒฉํ ๋ณ๋์ ๋น์ ์
- ์ต์ ํ ๊ณ ๋ ค์ฌํญ:
- ๋ฒํผ ํฌ๊ธฐ ์ค์
- ์ฌ์ฌ์ฉ ์ ์ฑ
- ๋ฉ๋ชจ๋ฆฌ ํํธํ ๊ด๋ฆฌ
- ํ์ผ ๋ฉ๋ชจ๋ฆฌ ์ง์ ๋งคํ ์์ญ
- ํ์ ์ ํ ๋น/ํด์
- ํ์ผ ์ฒ๋ฆฌ๋์ ๋ฐ๋ฅธ ๋ณ๋์ ์ ์
- ์ฌ์ฉ ์๋๋ฆฌ์ค:
- ๋์ฉ๋ ํ์ผ ์ฒ๋ฆฌ
- ๋น๋ฒํ ํ์ผ I/O
- ๋ฉ๋ชจ๋ฆฌ ๋งคํ ํ์ ์ํฉ
- ๋ฒ ์ด์ค๋ผ์ธ ์ธก์ ๋ฐ ๋ฌธ์ํ
- ์ ๊ธฐ์ ์ธ ํธ๋ ๋ ๋ถ์
- ๊ฒฝ๋ณด ์๊ณ๊ฐ ์ค์
- ๋ก๊ทธ ์ฐ๊ณ ๋ถ์
- Heap ์ฌ์ฉ๋ฅ : 85% ์ด์
- Full GC ๋น๋: ์๊ฐ๋น 2ํ ์ด์
- GC Pause Time: Major GC 1์ด ์ด์
- CPU ์ฌ์ฉ๋ฅ : ์ง์์ 80% ์ด์
- ํด๋์ค ๋ก๋ฉ: ๊ธ๊ฒฉํ ์ฆ๊ฐ
- ์ฆ์ ์๋ณ
- ๋ฉํธ๋ฆญ ์์ง ๋ฐ ๋ถ์
- ๋ก๊ทธ ๋ถ์
- ํ ๋คํ ๋ถ์ (ํ์์)
- ์์ธ ํ์ ๋ฐ ์กฐ์น
- ๋ชจ๋ํฐ๋ง ๊ฐํ