Table of contents
- ์ ์ฉ๋ ๊ธฐ์ ์คํ
- ๐ก ์ํคํ ์ฒ
- ๐จ ์ฑ๋ฅ ์ด์ ํด๊ฒฐ ๋ฐ ์ต์ ํ ๊ณผ์
- ๐ ํ๋ก์ ํธ๋ฅผ ์ํํ๊ธฐ ์ํด ๋ฐ๋ก ๊ณต๋ถ ๋ฐ ์ ๋ฆฌํ ํฌ์คํ
- ๐ ํ๋ก์ ํธ ์งํ ํฌ์คํ
1์ธ ํ๋ก์ ํธ๋ก ์งํ๋ ์๋ํ ๋ฐ ์ฑ๋ฅ๊ฐ์ ์ ์ด์ ์ ๋ Spring-Java ๊ธฐ๋ฐ ์ฑํ ๋ฐฑ์๋/ํ๋ก ํธ ์๋ฒ ํ๋ก์ ํธ์ ๋๋ค ๐
2022.11 ๋ถํฐ ์์ํด์ 2024.02 ๊น์ง ์ฝ 1๋ 3๊ฐ์์ด ๊ฑธ๋ ธ๋ค์! ์ค๊ฐ์ค๊ฐ ํ์ ๊ณผ ๋ณํํ๋ค๋ณด๋ ๋๋๋ถ๋ถ๋ ์์์ง๋ง ๊ฒฐ๊ตญ ๋ง๋ฌด๋ฆฌํ๊ฒ ๋์์ต๋๋ค. ์ ๊ฐ ์ข์ํ๋ ์๋ํ์ ์ฑ๋ฅ๊ฐ์ ์ ๋ง์๊ป ํ ์ ์์ด์ ์ ๋ง ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ์์ต๋๋ค.
์ ์ฉ๋ ๊ธฐ์ ์คํ
ํ์ฌ ์ ์ฉ๋ ๊ธฐ์ ์คํ์ ์๋์ ๊ฐ์ต๋๋ค.
Backend
- Spring-Boot / Java 17
- Spring-Security / Data-JPA / Cloud
- Postgresql, Redis
- Tomcat, Nginx
- JUnit5, Mockito, testContainer, nGrinder
- JWT
Infrastructure & Cloud
- Docker, Kubernetes
- AWS-IAM / EKS / ECR / RDS / EC2 / ELB / Route-53 / Cloud-Watch / Auto Scaleing
- Git Actions, shell script, gradle script
- Grafana & Prometheus, io.micrometer
- Kafka, RabbitMQ
Front
- Spring stomp
- Thymeleaf, html, css
๐ก ์ํคํ ์ฒ
[Backend] ์ฟ ๋ฒ๋คํฐ์ค ํ๋
[Backend] EC2 Instnace ํ๊ท CPU ์ฌ์ฉ๋ฅ ์ ๋ฐ๋ฅธ ๋ ธ๋ ์ค์ผ์ผ ์ธ/์์
[Backend] Git Actions multijob CI/CD ์๋ํ
[Frontend] Front UI
๐จ ์ฑ๋ฅ ์ด์ ํด๊ฒฐ ๋ฐ ์ต์ ํ ๊ณผ์
์ฑ๋ฅ ์ต์ ํ ๋ฐฉ๋ฒ๊ณผ ๊ฒฐ๊ณผ๋ฅผ link ์ ์์ธํ ์ ๋ฆฌํ์์ต๋๋ค! ์ด๋ฅผ ๋ฐํ์ผ๋ก ์์ฑํ ํฌ์คํ ์ ๋๋ค.
- 2023-01-16 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 1 : ๋์ปค ๋ฆฌ์์ค ์ถ๊ฐ์ ์๋ฒ ์ํ ํ์ฅ๋ฅผ ํตํ ์ฑ๋ฅ ์ต์ ํ ์งํ
- 2023-01-17 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 2 : JPA-Batch๋ฅผ ํตํ ์ฑ๋ฅ ์ต์ ํ ์งํ
- 2023-01-24 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 3 : JDBC-Batch ์ฑ๋ฅ ๊ทธ๋ํ ํ์ธ
- 2023-01-27 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 4 : JDBC Batch ์ต์ ํ ๋ฐ Postgresql ๋ณ๋ ฌ ํ๋ก์ธ์ ํ์ฅ
- 2023-03-05 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 5 : AWS-RDS ๊ทธ๋ํ ์งํ ๊ด์ฐฐ ๋ฐ db connection ์ฆ๊ฐ๋ฅผ ํตํ ์ฑ๋ฅ ์ต์ ํ ์งํ
- 2023-03-11 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 6 : ๋ถํ ํ ์คํธ๋ฅผ ์ํ ํด ์ ์ ๋ฐ ์ค์ ํ ์คํธ ๊ฒฐ๊ณผ
- 2023-03-16 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 7 : RDB ์ธ๋ฑ์ฑ ํ์ฑํ๋ฅผ ํตํ ์ฑ๋ฅ ์ต์ ํ ์งํ
- 2023-05-01 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 8 : ์ด๋ฒคํธ ์ ์ก ์ค๋ ๋ ์ฆ๊ฐ๋ฅผ ํตํ ์ฑ๋ฅ ์ต์ ํ ์งํ
2023-12-21 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 9 : HPA(max 3), ReadinessProbe, CPU limit, EKS NodeGroup AutoScaling O(CPU usage 50%), Caching, ํฐ์ผ ์ต์ ํ
๊ฐ์ ๋ ์งํํ์ธ
Metric Before After Change Total Tests 40,228 181,050 349.29% ๐ข Error Rate 51.11%(20,560) 0.00%(0) No Error ๐ข TPS ํ๊ท (Average) 109.27 312.16 185.94% ๐ข TPS p50 69.00 319.00 362.32% ๐ข TPS p95 4.00 217.45 5362.50% ๐ข TPS p99 2.84 132.28 4556.34% ๐ข TPS p99.9 1.63 96.52 5852.76% ๐ข MTTFB ํ๊ท (Average) 1605.44 ms 950.89 ms -40.68% ๐ข MTTFB p50 1636.55 ms 919.20 ms -43.90% ๐ข MTTFB p95 24013.28 ms 1322.11 ms -94.47% ๐ข MTTFB p99 27690.40 ms 1833.22 ms -93.40% ๐ข MTTFB p99.9 28157.50 ms 2099.12 ms -92.52% ๐ข MTTFB ์ฐจ์ด ํ๊ท (Average Difference) 2838.38 ms 112.52 ms -96.04% ๐ข MTTFB ํ๊ท ์ ์ธ ๋ณ๋๋ฅ (Average Variability) 75.00% 10.67% -85.77% ๐ข 2023-12-29 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 10 : Nginx Ingress replicaSet=2~3
๊ฐ์ ๋ ์งํํ์ธ
Metric Ingress Pod 1 Ingress Pod 2 Change Total Tests 181,050 240,587 32.93% ๐ข Error Rate 0.00%(0) 0.00%(3) N/A TPS ํ๊ท (Average) 312.16 410.55 31.51% ๐ข TPS p50 319.00 422.50 32.38% ๐ข TPS p95 217.45 288.60 32.69% ๐ข TPS p99 132.28 147.62 11.62% ๐ข TPS p99.9 96.52 37.04 -61.68% ๐ด MTTFB ํ๊ท (Average) 950.89 ms 709.86 ms -25.29% ๐ข MTTFB p50 919.20 ms 693.65 ms -24.54% ๐ข MTTFB p95 1322.11 ms 958.64 ms -27.49% ๐ข MTTFB p99 1833.22 ms 1117.45 ms -39.05% ๐ข MTTFB p99.9 2099.12 ms 1396.80 ms -33.54% ๐ข MTTFB ์ฐจ์ด ํ๊ท (Average Difference) 112.52 ms 58.82 ms -47.66% ๐ข MTTFB ํ๊ท ์ ์ธ ๋ณ๋๋ฅ (Average Variability) 10.67% 7.67% -28.09% ๐ข 2024-01-03 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 11 : RDB b-tree Long type PK indexing
๊ฐ์ ๋ ์งํํ์ธ
Metric Before After Change Total Tests 220,313 236,957 7.54% ๐ข Error Rate 0.00%(7) 0.00%(0) - TPS ํ๊ท 377.24 404.36 7.18% ๐ข TPS p50 390.25 420.50 7.76% ๐ข TPS p95 270.60 277.90 2.69% ๐ข TPS p99 92.58 64.34 -30.53% ๐ด TPS p99.9 34.05 43.17 26.74% ๐ข MTTFB ํ๊ท 496.27 ms 456.42 ms -8.03% ๐ข MTTFB p50 480.31 ms 431.84 ms -10.07% ๐ข MTTFB p95 882.81 ms 799.67 ms -9.41% ๐ข MTTFB p99 1163.81 ms 1130.67 ms -2.84% ๐ข MTTFB p99.9 1225.86 ms 1275.62 ms 4.06% ๐ด MTTFB ์ฐจ์ด ํ๊ท 106.51 ms 74.02 ms -30.46% ๐ข MTTFB ํ๊ท ์ ์ธ ๋ณ๋๋ฅ 20.77% 15.27% -26.60% ๐ข 2024-02-04 ์ฑ๋ฅ ์ต์ ํ ๊ณผ์ - 12 : RDB ์บ์ฑ (Look-Aside + Write-Around)
๊ฐ์ ๋ ์งํํ์ธ
Metric Before After Change Total Tests 12,356 16,788 36.00% ๐ข Error Rate 0.00%(0) 0.00%(0) 0 โช TPS ํ๊ท (Average) 228.81 310.89 35.87% ๐ข TPS p50 240.50 307.50 27.84% ๐ข TPS p95 162.40 282.85 74.20% ๐ข TPS p99 107.09 237.47 121.77% ๐ข TPS p99.9 90.36 223.55 147.24% ๐ข MTTFB ํ๊ท (Average) 438.32 ms 324.82 ms -25.93% ๐ข MTTFB p50 432.94 ms 323.11 ms -25.27% ๐ข MTTFB p95 733.43 ms 380.09 ms -48.14% ๐ข MTTFB p99 912.43 ms 471.73 ms -48.31% ๐ข MTTFB p99.9 951.93 ms 496.67 ms -47.85% ๐ข MTTFB ์ฐจ์ด ํ๊ท (Average Difference) 65.06 ms 24.31 ms -62.68% ๐ข MTTFB ํ๊ท ์ ์ธ ๋ณ๋๋ฅ (Average Variability) 13.73% 7.67% -44.11% ๐ข
๐ ํ๋ก์ ํธ๋ฅผ ์ํํ๊ธฐ ์ํด ๋ฐ๋ก ๊ณต๋ถ ๋ฐ ์ ๋ฆฌํ ํฌ์คํ
- ๋ฉ์ธ์งํ - 1 : ๋ฉ์ธ์ง ํ์ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ฆฌ
- ๋ฉ์ธ์งํ - 2 : Kafka ์ฉ์ด์ ๋ฆฌ ๋ฐ ๊ตฌ์กฐ ํ์
- ๋ง์ดํฌ๋ก์๋น์ค - 1(EN) : ๊ธฐ๋ณธ์ ์ธ MSA ์ ์ฅ๋จ์ ๋ฐ ์ดํด ์ ๋ฆฌ
- ๋ง์ดํฌ๋ก์๋น์ค - 2 : SAGA ํจํด์ ๋ํ ์ดํด ์ ๋ฆฌ
- ๋ง์ดํฌ๋ก์๋น์ค - 3 : DDD ์ ๋ํ ์ดํด์ ์ด๋ฒคํธ ๋กค๋ฐฑ์ฒ๋ฆฌ์ ๋ํ ์ดํด ์ ๋ฆฌ
- ๋ง์ดํฌ๋ก์๋น์ค - 4(EN) : Docker/Kubernetes ์ดํด ์ ๋ฆฌ
- ์น์๋ฒ - 1 : Netty ์ํคํ ์ฒ ๋ฐ ๋์์๋ฆฌ ์ ๋ฆฌ
- ์น์๋ฒ - 2 : JVM NIO ๋ชจ๋ธ์์ Reactor ๋ชจ๋ธ๊น์ง์ ๋ณ์ฒ์ฌ ์ ๋ฆฌ
- ์คํ๋ง - 1 : Spring-Webflux ์ ๋ฆฌ
- ์คํ๋ง - 2 : Reactor ๋ชจ๋ธ์์์ Spring-security ์ธ๊ฐ ์ค์ ์ ๋ฆฌ
- ์๋ผ์คํฑ์์น - 1 : RDB ์ ElasticSearch ๋น๊ต ์ ๋ฆฌ
- ์๋ผ์คํฑ์์น - 2 : ElasticSearch ๋ ธ๋ ์ด์ฉ ๋ฐฉ๋ฒ ์ ๋ฆฌ
- ์๋ผ์คํฑ์์น - 3 : LogStash ์ Kibana ๋ฅผ ๋ถ์ฌ ํ๋์ ์คํ์ ํตํ ์๊ฐํ ๊ณผ์ ์ ๋ฆฌ
- ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค - 1 : ์ฟผ๋ฆฌ ์ต์ ํ ๋ฐฉ๋ฒ ์ ๋ฆฌ
- ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค - 2 : ๋ฐ์ดํฐ ์ ํฉ์ฑ ์ด๋ก ์ ๋ฆฌ
- Golang - 1 : ๋ถํ ํ ์คํธ ํด ์ ์ ์ ํ์ํ ๊ฒฝ๋ ์ค๋ ๋ ๊ตฌ์กฐ ์ ๋ฆฌ
- Java - 1 : ์๋ฐ์ CompletableFure ์ ํตํ ์ฝ๋ฐฑ/๋ฉํฐ์ค๋ ๋ฉ ์ ๋ฆฌ
- Java - 2 : ์๋ฐ์ ๋๊ธฐ/๋น๋๊ธฐ Blocking/Non-blocking ์ ๋ฆฌ
- Git ์ปจ๋ฒค์ - 1 : Git ์ปจ๋ฒค์ ์ ๋ฆฌ
- JWT - 1 : ํ ํฐ ์ ์ฅ ์ ์ฃผ์์ฌํญ ๋ฐ ๊ตฌํ ๋ฐฉ์ ์ ๋ฆฌ
๊ทธ ๋ฐ์ Reactor, R2DBC, Spring-WebFlux Transactional ์ฒ๋ฆฌ, K8S, AWS, etc.
๐ ํ๋ก์ ํธ ์งํ ํฌ์คํ
Table of contents
- 1. ํ์ฌ ํ๋ก์ ํธ์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ๋ฐฉ๋ฒ
- 2. ํ๋ก์ ํธ ์ํ์ ๊ณ ๋ ค์ 1
- 3. JPA save ์๋ชป๋ ์ดํด๋ก ๋น๋กฏ๋ ์๋ฌ
- 4. ํ๋ก์ ํธ ์ํ์ ๊ณ ๋ ค์ 2
- 5. Kafka ์ฐ๋์๋ฃ
- 6. ์ ์ฒด ์ํคํ ์ฒ ์์
- 7. ์์ ๋ ์ํคํ ์ฒ
- 8. Kafka/Spring/ELK Stack ์ฐ๋์๋ฃ
- 9. ๋จ๋ฐฉํฅ DB Sync with Kafka connector
- 10. ์๋ฐฉํฅ DB Sync ๊ตฌํ์ ์ด๋ ค์๊ณผ ๋น์ฉ
- 11. ๋๋ Rest api test ์ฝ๋
- 12. ๋๋ Rest api test
- 13. ๋๋ Rest api test ์ ์๋๋ฌธ์ ํด๊ฒฐ๊ณผ์ -1
- 14. ๋๋ Rest api test ์๋ํ
- 15. ๋๋ Rest api test ์ ์๋๋ฌธ์ ํด๊ฒฐ๊ณผ์ -2
- 16. ํ๋ก ํธ ์๋ฒ์ ์์ UI + ์ํ์ค ๋ค์ด์ด๊ทธ๋จ + HTTP ์ก/์์ ๋ฐฉ๋ฒ ์ ์
- 17. ํ๋ก ํธ ์๋ฒ ๊ฐ๋ฐ ์๋ฃ ๋ฐ ์ฑ๋ฅ์ด์ ๋ฐ์
- 18. ์ฑ๋ฅ๊ฐ์ ์ฌ์๋ค ๋ฐ ์ ์ฉ๋ ๊ฐ
- 19. ํ์ฌ๊น์ง์ ์ผ์ ๊ด๋ฆฌ Notion
- 20. ์ฑ๊ธ ์ค๋ ๋ -> ๋ฉํฐ ์ค๋ ๋
- 21. Postgresql Locks ๋ฐ RDS ์งํ ๊ด์ฐฐ, ์ฑ๋ฅํฅ์!
- 22. @Async๋ฅผ ์ฌ์ฉํ์ง ์๋ Spring Java MultiThread handling
- 23. HTTP benchmark tool ์ ์ ๋ฐ ์๋ฒ ๋ถํ Fuzzing Test
- 24. ํธ๋์ ์ ๊ณผ ๋ฉํฐ์ค๋ ๋์ ์๋ชป๋ ๋งค์นญ ์์
- 25. Postgresql indexing ํ์ฑํ
- 26. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-1
- 27. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-2
- 28. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-3
- 29. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-4
- 30. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-5
- 31. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-6
- 32. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-6(MSA Project ๋ฅผ ์งํํ๋ฉด์ ๋๋ ์ )
- 33. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-7(์ฃผ๋ฌธ์๋น์ค ์ด๋ฒคํธ flow ๋ฐ ์คํค๋ง ์ค๊ณ)
- 34. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-8(CQRS ์ค๊ณ)
- 35. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-9(์ฑ๋ฅ์ด์ ํด๊ฒฐ ๊ณผ์ )
- 36. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-10(FE/BE ๋๊ธฐํ)
- 37. Spring Cloud ๊ธฐ๋ฐ MSA ๋ณํ ์์-11(RDB ํธ๋ํฝ ๋ถ์ฐ)
- 38. CI/CD ์๋ํ ์ฑ๊ณต ๊ทธ๋ฆฌ๊ณ ์คํจ - 1
- 39. CI/CD ์๋ํ ์ฑ๊ณต - 2
- 40. ์๋ฒ์ฑ๋ฅ ๊ฐ์ ๊ธฐ๋ก - ๐ขTPS p99 4556%, MTTFB p95 94.47% ๊ฐ์
- 41. ์๋ฒ์ฑ๋ฅ ๊ฐ์ ๊ธฐ๋ก - ๐ขTPS AVG 31%, MTTFB p99 39% ๊ฐ์
- 42. ์๋ฒ์ฑ๋ฅ ๊ฐ์ ๊ธฐ๋ก - ๐ขMTTFB ๋ณ๋๋ ํ๊ท 30.46% ๊ฐ์
- 43. ์๋ฒ์ฑ๋ฅ ๊ฐ์ ๊ธฐ๋ก - ๐ดMTTFB ํ๊ท ์ฐจ์ด - 31% ์ฑ๋ฅ๊ฐ์
- 44. ํ์ฌ๊น์ง ํ๋ก์ ํธ์ ์ฌ์ฉ๋ ๊ธฐ์ ์ ๋ฆฌ
- 45. CI/CD ์๋ํ ๊ตฌ์ถ - 3
- 46. SQL OrderBy ์ ์ฌ๋ฌ๊ฐ์ง ์ธ๋ฑ์ค ์ ์ฉํด๋ณด๊ธฐ - 46๋ฐฐ ๋นจ๋ผ์ง ์ฟผ๋ฆฌ!