[๊ฐ์ ํ 2023-11-27] Spring Boot 3.x ๋ฅผ ์ด์ฉํ RESTful Web Services ๊ฐ๋ฐ
์ด ๊ฐ์๋ Spring Boot๋ฅผ ์ด์ฉํด์ RESTful Web Services ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์ ๋ํด ํ์ตํ๋ ๊ฐ์์ผ๋ก์จ, REST API ์ค๊ณ์ ํ์ํ ๊ธฐ๋ณธ ์ง์์ ๋ํด ํ์ตํ ์ ์์ต๋๋ค.
์๊ฐ์ 4,910๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ

์๋ ํ์ธ์, ์ด๋์์ ๋๋ค.
์ด๋ฒ์ ์๋กญ๊ฒ "Spring Boot๋ฅผ ์ด์ฉํ RESTful Web Services ๊ฐ๋ฐ" ๊ฐ์๊ฐ ์ ๋ฐ์ดํธ ๋์์ต๋๋ค.
๊ธฐ์กด์ Spring Boot 2.x ๋ฒ์ ์ผ๋ก ์์ฑ๋์๋ ์์ ๋ฅผ ์๋กญ๊ฒ Spring Boot 3.1.x ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๊ฐ์๋ฅผ ๋ค์ ์ค๋นํ๊ฒ ๋์์ต๋๋ค.
Spring Boot 3.1 ๋ฒ์ ์ ์ด์ฉํ์ฌ RESTful API ๊ฐ๋ฐํ๋ ๊ณผ์ ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
๊ฐ์์์ ๋ค๋ฃจ๊ณ ์๋ ์์ ๋ฅผ Spring Boot 3.1 ๋ฒ์ ์ ๋ง๊ฒ ์ ๊ทธ๋ ์ด๋ ํ์์ต๋๋ค.
Section ๋ณ ์์ ๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ์์ํ๋๋ก, ๊ฐ Section์ ๋ง์ถฐ GIt branch๋ฅผ ๊ตฌ๋ถํด ๋์์ต๋๋ค.
์๋ก์ด ๋ฒ์ ์ ๋ง์ถฐ Spring Security ์์ ๊ฐ ์์ ๋์์ต๋๋ค.
Swagger Documentation ๋ถ๋ถ์ ๊ธฐ์กด์ ์ฌ์ฉ๋๋ Spring Boot 2.7๊ณผ Spring Boot 3.1์ ๋ง์ถฐ ์ฌ์ฉํ์ค ์ ์๋๋ก ์๊ฐํ๊ณ ์์ต๋๋ค.
Spring Boot 2.7 + springfox 3.0
Spring Boot 3.1 + springdoc (OAS 3.0)
๊ธฐ์กด ๊ฐ์์์ ์ฌ๋ฌ ์๊ฐ์ ๋ถ๋ค์ด ์ธ๊ธํด ์ฃผ์ จ๋ ๊ฐ์ ๋ นํ ์์ฑ์ ๋ถํธํจ ์์ด ๋ค์ผ์ค ์ ์๋๋ก ๋ค์ ์ ์ํ์์ต๋๋ค.
์๋กญ๊ฒ ์ ๋ฐ์ดํธ ๋ ๊ฐ์์๋ ๋ง์ ๊ด์ฌ ๋ถํ๋๋ฆฝ๋๋ค.
์์ผ๋ก๋ ์ข์ ๊ฐ์๋ก ์ฐพ์ ๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์, ์ด๋์์ ๋๋ค.
์ฝ๋ก๋๋ ์กฐ๊ธ์ฉ ์ง์ ๋์ด ๊ฐ๊ณ ์๋ ๋ชจ์ต์ด๊ณ , ์ ์์ ์ธ ์ฌํ์ํ๋ก ๋์๊ฐ๊ณ ์๋ ๋ฏ ํฉ๋๋ค.
2022๋ ๋ ์ฌ๋ฆ์ด ์์๋๊ณ ์์ต๋๋ค. ์ฅ๋ง๊ฐ ์์๋๊ณ ์๋ ๋ฏ ๋ง์ ํ๋์ ๋ณด๊ธฐ๊ฐ ์ด๋ ต๋ค์.
"Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ (MSA)" ๊ฐ์์ ํ์ ๊ฐ์๋ฅผ ๊ธฐ๋ค๋ ค ์ฃผ์๋ ๋ถ๋ค๊ป๋ ์ฃ์กํ๋ค๋ ๋ง์ธ์๋ ๋๋ฆด ๋ง์์ด ์๋ค์. ์๋ ๊ณํ๋๋ก๋ค๋ฉด ์ง๋ 1์์ ์คํ๋์ด์ผ ํ ๊ฐ์๊ฐ ์งํํ๋ ํ๋ก์ ํธ์ ์ด์๋ก 2์ 3์ ์ฐ๊ธฐ๋๋ค๊ฐ ์์ง๋ ์คํํ์ง ๋ชปํ๊ณ ์๋ค์... ๊ทธ๋๋... ์ ๋ง ๊ณง! ์คํํ๋ ค๊ณ ๋ง์ง๋ง ์ค๋น ์์ ์ค์ ์์ต๋๋ค.
๋ค์ ๊ฐ์๋ ์์ ๋๋ก CI/CD์ ๊ด๋ จ๋ ๊ฐ์์ ๋๋ค. ์ค๋์ CI/CD ๊ฐ์์ ๋ํ ๋ชฉ์ฐจ ๋จผ์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
๊ฐ์๋ ์ ์ฒด 6~7๊ฐ ์น์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. Appendix๋ฅผ ๋ณธ ๊ฐ์์ ํฌํจ ์ํฌ์ง ์ฌ๋ถ์ ๋ฐ๋ผ์ 6๊ฐ ๋๋ 7๊ฐ ์น์ ์ผ๋ก ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
Section 1. DevOps์ CI/CD
1-1. DevOps์ CI/CD
1-2. CI/CD ์์ ํ๋ฆ
1-3. Jenkins ์ค์น
1-4. Exercisef #1
Section 2. Jenkins๋ฅผ ์ด์ฉํ CI/CD ์ฌ์ฉ
2-1. CI/CD๋ฅผ ์ํ Git & Maven ์ฐ๋
2-2. Exercisef #2
2-3. CI/CD๋ฅผ ์ํ Tomcat Server ์ฐ๋
2-4. Exercisef #3
2-5. PollSCM ์ค์
2-6. Docker๋ฅผ ์ด์ฉํ ์ค์ต ํ๊ฒฝ ๊ตฌ์ฑ
2-7. Exercisef #4
Section 3. Jenkins + Infrastructure as Code (Ansible์ ์ด์ฉํ Configuration Management)
3-1. IaC
3-2. Ansible ๊ฐ์
3-3. Ansible ์ค์น
3-4. Ansible Playbook
3-5. Exercise #5
3-6. Docker ์ด๋ฏธ์ง ๋ฐฐํฌ
3-7. Exercise #6
Section 4. Jenkins + Ansible + Kubernets ์ฐ๋
4-1. Kubernetes Cluster์ ๋ฐฐํฌํ๊ธฐ
4-2. Ansible + Kubernetes ์ฐ๋
4-3. Exercise #7
4-4. CI/CD ํ๋ก์ธ์ค
4-5. Exercise #8
4-6. Minikube ์ค์น (Apple Silicon chip)
Section 5. Advanced Jenkins ์ฌ์ฉ
5-1. Delivery Pipeline ์ฌ์ฉ
5-2. Jenkins Pipeline ๊ตฌ์ฑ
5-3. Exercise #9
5-4. Exercise #10
5-5. Practices
5-6. SonarQube ์ ์ ๋ถ์
Section 6. Public Cloud์ ๋ฐฐํฌ
6-1. AWS EC2 ์ธ์คํด์ค ์์ฑ๊ณผ Docker ์ค์น
6-2. AWS์ ๋ฐฐํฌ
6-3. Kops๋ฅผ ์ด์ฉํ Kubernetes Cluster ๊ตฌ์ฑ
6-4. NCP ์๋ฒ ์ธ์คํด์ค ์์ฑ๊ณผ Docker ์ค์น
6-5. NCP์ ๋ฐฐํฌ
Appendix
A-1. ํ์ SW ์ค์น
A-2. Tomcat Server ์ค์น
A-3. SSH Server
A-4. Windows ์ฌ์ฉ์๋ฅผ ์ํ XShell, MobaXterm ์ค์น
A-5. MacOS ์ฌ์ฉ์๋ฅผ ์ํ Terminus ์ค์น
๊ฐ์์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ๋ถ๋ค๊ป ๋ค์ํ๋ฒ ๊ฐ์ฌ์ ์ธ์ฌ๋ฅผ ๋๋ฆฌ๋ฉฐ, ์กฐ๋ง๊ฐ์ ์ข์ ๊ฐ์๋ก ์ฐพ์๋ต๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์, ์ด๋์์ ๋๋ค.
"Jenkins๋ฅผ ์ด์ฉํ CI/CD Pipeline ๊ตฌ์ถ" ๊ฐ์์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ค๋ฃจ๊ณ ์ ํฉ๋๋ค.
Section 1. DevOps์ CI/CD
1. DevOps์ CI/CD
2. CI/CD ์์ ํ๋ฆ
3. ํ์ SW ์ค์น
4. Jenkins ์ค์น
Section 2. Jenkins๋ฅผ ์ด์ฉํ CI/CD ์ฌ์ฉ
5. CI๋ฅผ ์ํ Git & Maven ์ฐ๋
6. CD๋ฅผ ์ํ Tomcat Server ์ฐ๋
7. CD๋ฅผ ์ํ Docker ์ฐ๋
Section 3. Ansible์ ์ด์ฉํ Configuration Management
8. Ansible ๊ฐ์
9. Ansible ์ฌ์ฉ
10. Ansible Playbook
11. Playbook์ ํตํ Docker ์ด๋ฏธ์ง ๋ฑ๋ก
Section 4. Jenkins + Ansible + Kubernets ์ฐ๋
12. Kubernetes Cluster์ ๋ฐฐํฌํ๊ธฐ
13. Ansible + Kubernetes ์ฐ๋
Section 5. Jenkins Pipeline ์ฌ์ฉ
14. Delivery Pipeline ์ฌ์ฉ
15. Jenkins Pipeline ๊ตฌ์ฑ
Appendix
1. Apple M1 ์ฌ์ฉ์๋ฅผ ์ํ Minikube ์ค์น
2. AWS EC2 ์ธ์คํด์ค ์์ฑ๊ณผ Docker ์ค์น
3. Windows ์ฌ์ฉ์๋ฅผ ์ํ XShell, MobaXterm ์ค์น
4. MacOS ์ฌ์ฉ์๋ฅผ ์ํ Terminus ์ค์น
5. Kops๋ฅผ ์ด์ฉํ Kubernetes Cluster ๊ตฌ์ฑ
์์ผ๋ก๋ ์ง์์ ์ธ ๊ด์ฌ๊ณผ ์ฑ์ ๋ถํ๋๋ฆฝ๋๋ค.
๋ ์จ๊ฐ ์กฐ๊ธ์ฉ ์์ํด ์ง๊ณ ์์ต๋๋ค. ๋ค๋ค ๋ชธ๊ด๋ฆฌ ์ํ์๊ณ , ๊ฑด๊ฐํ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์, ์ด๋์์ ๋๋ค.
๋จผ์ ๊ฐ์์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ๋ง์ ๋ถ๋ค๊น ๊ฐ์ฌ์ ์ธ์ฌ๋๋ฆฝ๋๋ค.
Spring Boot์ Spring Cloud๋ฅผ ํ์ฉํ ๋ง์ดํฌ๋ก์๋น์ค ๊ด๋ จ ๊ฐ์๋, CNCF์ ์๊ธฐํ๋ Cloud Native์ ๊ตฌ์ฑ์์ 4๊ฐ์ง์ ๋ง์ถฐ์ ๊ฐ์๋ฅผ ๊ตฌ์ฑํด ๋ณด๋ ค๊ณ ๊ณํํ์ต๋๋ค.
- ์ปจํ ์ด๋ ๊ฐ์ํ
- ๋ง์ดํฌ๋ก์๋น์ค
- CI/CD
- DevOps
"Spring Boot๋ฅผ ์ด์ฉํ RESTful Web Services ๊ฐ๋ฐ"๊ณผ "Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ " ๊ฐ์๋ฅผ ์์ํ์๊ณ , ๊ฐ์์์ ๋ฏธ์ณ ๋ค๋ฃจ์ง ๋ชปํ ๋ด์ฉ์ธ MSA Achitecture, Pattern, Service Mesh์ CI/CD๋ ํ์ ๊ฐ์๋ก ๊ณํ ์ค์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ "Spring Boot๋ฅผ ์ด์ฉํ RESTful Web Services ๊ฐ๋ฐ" ๊ฐ์๋ ์๋ก ์ ๋ฐ์ดํธ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ์ํ์ฌ ๋ค์ ์ ๋ฐ์ดํธ ๊ณํ ์ค์ ๋๋ค.
๋ง์ํ์ ๋ด์ฉ์ฒ๋ผ ํ์ ๊ฐ์๋ ๋ค์ ์์๋ก ์คํ ํ ๊ณํ์ ๋๋ค. ๊ฐ์ ์คํ ์๊ธฐ๋ ๋ค๋ฅธ ์ ๋ฌด์ ๊ฒน์ณ ๊ณ์ ๋ฏธ๋ค์ง๊ณ ์์ง๋ง, ์ต๋ํ ์ฌํด ์คํํ๋ ๊ฒ ๋ชฉํ์ ๋๋ค.
1. CI/CD (8์ ์ค)
2. MSA Architecture + Pattern + Service Mesh (9์~10์)
3. WebFlux (~12์)
๋ฌด๋์ด ๋์์ ์ฝ๋ก๋๋ก ๊ณ ์์ค๋ฝ์ง๋ง, ๋ชจ๋๋ค ๊ฑด๊ฐํ์๊ณ , ํ์๊ณ ์ ํ๋ ๋ฐ๋ฅผ ์ด๋ฃจ์๊ธธ ๋ฐ๋๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์, ์ด๋์์ ๋๋ค.
"Spring Boot๋ฅผ ์ด์ฉํ RESTful Web Service ๊ฐ๋ฐ" ๊ฐ์๋ฅผ ์์ํ ์ง 1๋ ์ด ๋ค ๋์ด ๊ฐ๋ค์. ๋ค์ํ๋ฒ ์๊ฐํด ์ฃผ์ ๋ถ๋ค๊ป ๊ฐ์ฌ์ ์ธ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค.
๋น์ด ๊ณํ์, ํ์ ๊ฐ์์ธ "Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค"๋ฅผ ๋ฐ๋ก ์คํํ ์์ ์ด์๋๋ฐ, ์ฌ๋ฌ๊ฐ์ง ์ฌ์ ์ผ๋ก ๋ฏธ๋ฃจ๋ค๊ฐ ์ด์ ์์ผ ์คํํ๊ฒ ๋์์ต๋๋ค.
"Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค"๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ค๋ฃจ๊ณ ์์ผ๋ฉฐ, ํ์ฌ ๊ฐ์ ๋ นํ ์๋ฃ๋์ด, ์ธํ๋ฐ์ ์ ์ถํ ์ํ์ ๋๋ค.
"Spring Boot๋ฅผ ์ด์ฉํ RESTful Web Service ๊ฐ๋ฐ" ๊ฐ์๋ ์ ์ฒด ๊ฐ์ ์๊ฐ์ด 7์๊ฐ ๋จ์ง์ด์๋๋ฐ, ์ด๋ฒ "Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค"๋ ์์ง ๋ นํ๊ฐ ๋๋์ง ์์์์๋, ๋ฒ์จ 27์๊ฐ์ด ๋์์ต๋๋ค. ๊ทธ๋์, ์ ์ฒด 2๊ฐ์ ํํธ๋ก ๋๋์ด์ ๊ฐ์๋ฅผ ํ์์ผ๋ฉฐ, ๊ทธ๋๋ ๋ค ๋ค๋ฃจ์ง ๋ชปํ๋ ๋ถ๋ถ์ ๋ํด์๋ ํ์๊ฐ์๋ฅผ ํตํด ์งํํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ฒ๋ฌ์ธ 2021๋ 3์์ ์คํํ๋ ค๊ณ ํ์ฌ ๋๊ธฐ ์ค์ด๋ฉฐ, ๊ธฐ์กด์ ๊ณํํ๋ ๋ด์ฉ์ ๋ณด์ํ์ฌ ์๋์ ๊ฐ์ ๋ด์ฉ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
๋ง์๋๋ฆฐ ๋ฐ์ ๊ฐ์ด ์ ์ฒด ๊ฐ์๋ 2๊ฐ์ ํํธ๋ก ๊ตฌ์ฑ๋ ์์ ์ด๋ฉฐ, ์ด 17๊ฐ ์น์ ์ ์ฃผ์ ๋ก ์งํํ๋ ค๊ณ ํฉ๋๋ค.
PART I์น์ 0. Microservice์ Spring Cloud์ ์๊ฐ์น์ 1. Service Discovery์น์ 2. API Gateway Service์น์ 3. E-commerce ์ ํ๋ฆฌ์ผ์ด์ ์น์ 4. Users Microservice โ์น์ 5. Catalogs and Orders Microservice์น์ 6. Users Microservice โ์น์ 7. Configuration Service์น์ 8. Spring Cloud BusPART II์น์ 9. ์ค์ ์ ๋ณด์ ์ํธํ ์ฒ๋ฆฌ์น์ 10. Microservcie๊ฐ ํต์์น์ 11. ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํ Apache Kafka์ ํ์ฉ โ์น์ 12. ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํ Apache Kafka์ ํ์ฉ โก์น์ 13. ์ฅ์ ์ฒ๋ฆฌ์ Microservice ๋ถ์ฐ ์ถ์ ์น์ 14. Microservice ๋ชจ๋ํฐ๋ง์น์ 15. ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์ํ ์ปจํ ์ด๋ ๊ฐ์ํ์น์ 16. ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ - Docker ContainerAppendix: Microservice Architecture ํจํด๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ๋ง์ ์๊ฐ์๋ถ๋ค๊ป ๋ค์ํ๋ฒ ๊ฐ์ฌ์ ๋ง์๋๋ฆฌ๋ฉฐ, ์๋ก์ด ๊ฐ์๋ก ๋ค์ ์ฐพ์ ๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.






