π μ°λ¦¬λ Spring Cloudλ₯Ό νμ©νμ¬ MSAλ₯Ό ꡬμΆνλ€.
π μ΄λ²μλ, λ§μ΄ν¬λ‘μλΉμ€λ₯Ό μμ±ν κ²μ΄λ€.
λ§μ΄ν¬λ‘μλΉμ€λ user, beverage, community 3κ°μ μλΉμ€λ‘ ꡬμ±νλ€.
- user-service
- beverage-service
- community-service
β μΉ νλ‘μ νΈλ₯Ό μμ±ν λ νμν μμ‘΄μ±μ λν΄ μμ보μ.
1. Lombok
lombok μ Java λΌμ΄λΈλ¬λ¦¬ μ€ νλλ‘ Java κ°λ° μμ λ°λ³΅μ μΌλ‘ ꡬνλλ getter, setter, toString λ±μ μλμΌλ‘ μμ±ν΄ μ£Όμ΄ μ½λλ₯Ό κ°κ²°νκ² μ μ§νκ³ μμ°μ±μ λμ¬μ£Όλ λΌμ΄λΈλ¬λ¦¬μ΄λ€. μ΄λ Έν μ΄μ μ κΈ°λ°μΌλ‘ λμνλ©°, ν΄λμ€μ μ΄λ Έν μ΄μ μ μΆκ°νμ¬ μ»΄νμΌ κ³Όμ μμ μ€μ κΈ°λ₯μ΄ μμ±λλ λ°©μμΌλ‘ λμνλ€. μ¦, μμ€μ½λμμλ μ΄λ Έν μ΄μ λ§ λ³΄μ΄κ³ ν΄λΉ λ©μλλ€μ 보μ΄μ§ μμ§λ§ μ€μ λ‘ μ»΄νμΌλ κ²°κ³Όλ¬Ό. class νμΌμλ μ½λκ° μμ±λκ² λλ€.
lombokμ μ¬μ©νλ©΄ λ°λ³΅μ μΈ μ½λκ° μ κ±°λμ΄ μ½λμ κ°λ μ±μ΄ μ’μμ§κ³ μ μ§λ³΄μμ μ 리ν΄μ§λ€. λν λ°λ³΅μ μΈ μ½λ μμ±μ μκ°μ΄ μ€μ΄ μμ°μ±μ΄ ν₯μλλ€. νμ§λ§ κ²½μ°μ λ°λΌμλ μ½λκ° μ§κ΄μ μ΄μ§ μκ³ μ΄λ Έν μ΄μ μΌλ‘ μλ΅λλ κ²μ λΆνΈν¨μ΄ μμ μλ μμ΄ μν©μ λ§κ² μ¬μ©νλ κ²μ΄ μ’λ€.
λν λ΄λΆμμ μ΄λ»κ² ꡬνμ΄ λλμ§ μ΄ν΄λ₯Ό νκ³ μ¬μ©ν΄μΌ νλ€. μλ₯Ό λ€μ΄ @ToStringμ κ²½μ° ν΄λμ€μ λ΄λΆ νλμ μ±κ²©μ λ°λΌμ μν μ°Έμ‘°λ 무ν μ¬κ· νΈμΆ λ±μ λ¬Έμ λ₯Ό λ°μν μ μλ€. κ·Έλ κΈ° λλ¬Έμ κ° κΈ°λ₯λ€μ΄ ꡬννλ λ‘μ§μ λν΄μ μμ§νκ³ λ°μν μ μλ μμΈ μν©μ λν΄μ νμ ν νμ μ¬μ©νλ κ²μ΄ νμνλ€.
2. Spring Web
Spring Webμ μΉ μ ν리μΌμ΄μ μ κ°λ°νλ λ° νμν κΈ°λ₯μ μ 곡νλ μ€νλ§ λΆνΈμ μμ‘΄μ±μ΄λ€.
Spring MVC, Tomcat, Jackson κ°μ μΉ κ°λ°μ νμν λλΆλΆμ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¨νκ³ μλ€.
Spring Boot νλ‘μ νΈμμ Spring Web μμ‘΄μ±μ μΆκ°νλ©΄ λ€μκ³Ό κ°μ μ£Όμ λΌμ΄λΈλ¬λ¦¬λ€μ΄ μλμΌλ‘ μ€μ λλ€.
- Spring Boot Starter Web: Spring Boot Starter Webλ Spring Webκ³Ό κ΄λ ¨λ κΈ°λ³Έμ μΈ μ€μ μ μλμΌλ‘ ν΄μ£Όλ μ€νν°(Starter) ν¨ν€μ§μ λλ€. μ΄λ₯Ό μΆκ°νλ©΄ Spring MVC, λ΄μ₯ μΉ μλ² μ€μ , κΈ°λ³Έμ μΈ μΉ μ ν리μΌμ΄μ κ΅¬μ± λ±μ΄ μλμΌλ‘ μ€μ λ©λλ€.
- Spring MVC: Spring MVCλ Model-View-Controller ν¨ν΄μ κΈ°λ°μΌλ‘ ν μΉ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν ν΅μ¬ λͺ¨λμ λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ 컨νΈλ‘€λ¬(Controller), λͺ¨λΈ(Model), κ·Έλ¦¬κ³ λ·°(View)λ₯Ό μ¬μ©νμ¬ μΉ μ ν리μΌμ΄μ μ λΉμ¦λμ€ λ‘μ§κ³Ό μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λΆλ¦¬νκ³ , κ°κ°μ μν μ ꡬνν μ μμ΅λλ€.
- λ΄μ₯ μΉ μλ² μ€μ : Spring Bootλ ν°μΊ£(Tomcat), μ ν°(Jetty), μΈλν μ°(Undertow) λ±μ λ΄μ₯ μΉ μλ²λ₯Ό μ 곡ν©λλ€. Spring Web μμ‘΄μ±μ μΆκ°νλ©΄ κΈ°λ³Έμ μΌλ‘ μ΄λ¬ν λ΄μ₯ μΉ μλ²μ μ€μ μ΄ μλμΌλ‘ μΆκ°λ©λλ€. μ΄λ₯Ό ν΅ν΄ λ³λλ‘ μΉ μλ²λ₯Ό μ€μΉνκ±°λ ꡬμ±ν νμ μμ΄ κ°νΈνκ² μΉ μ ν리μΌμ΄μ μ μ€νν μ μμ΅λλ€.
- RESTful μΉ μλΉμ€ μ§μ: Spring Webμ RESTful μΉ μλΉμ€λ₯Ό μ½κ² κ°λ°ν μ μλ λ€μν κΈ°λ₯μ μ 곡ν©λλ€. μ΄λ₯Ό ν΅ν΄ JSON λλ XML νμμ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ RESTful μΉ μλΉμ€λ₯Ό ꡬμΆν μ μμ΅λλ€.
- λ°μ΄ν° λ°μΈλ©κ³Ό μ ν¨μ± κ²μ¬: Spring Webμ HTTP μμ²μ λ°μ΄ν°λ₯Ό μλμΌλ‘ Java κ°μ²΄λ‘ λ°μΈλ©νκ³ , λ°μ΄ν°μ μ ν¨μ±μ κ²μ¬ν μ μλ κΈ°λ₯μ μ 곡ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ¬μ©μ μ λ ₯μ μ²λ¦¬νκ³ κ²μ¦νλ μμ μ κ°νΈνκ² μνν μ μμ΅λλ€.
λ°λΌμ Spring Webμ μ¬μ©νλ©΄ Spring κΈ°λ°μ μΉ μ ν리μΌμ΄μ μ λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ κ°λ°ν μ μμΌλ©°, Spring Bootμ μλ κ΅¬μ± κΈ°λ₯μ ν΅ν΄ μ€μ μ 볡μ‘μ±μ μ€μΌ μ μμ΅λλ€.
Spring Webμ μ£Όμ μ΄λ Έν μ΄μ
μ΄λ Έν μ΄μ | μ€λͺ |
@SpringBootApplication | μ€νλ§ λΆνΈ μ ν리μΌμ΄μ μ μ£Όμ κ΅¬μ± μμλ‘, μλ ꡬμ±, κ΅¬μ± μμ κ²μ λ° νλ‘νΌν° μ€μ μ μ 곡ν©λλ€. |
@Configuration | μ€νλ§ λΉ μ€μ μ μν ν΄λμ€μμ λνλ λλ€. μ΄ μ΄λ Έν μ΄μ μ΄ μ§μ λ ν΄λμ€λ νλ μ΄μμ @Bean λ©μλλ₯Ό ν¬ν¨ν μ μμ΅λλ€. |
@Bean | μ€νλ§ μ»¨ν μ΄λμ μν΄ κ΄λ¦¬λλ λΉ κ°μ²΄λ₯Ό μ μνλ λ©μλμμ λνλ λλ€. @Configuration μ΄λ Έν μ΄μ μ΄ μ§μ λ ν΄λμ€ λ΄μμ μ¬μ©λ©λλ€. |
@Component | μ€νλ§ κ΄λ¦¬ λΉμΌλ‘ λ±λ‘λλ ν΄λμ€μμ λνλ λλ€. μΌλ°μ μΌλ‘ μμ‘΄μ± μ£Όμ (Dependency Injection)μ μν΄ μ¬μ©λ©λλ€. |
@Controller | μ€νλ§ MVC μ ν리μΌμ΄μ μμ 컨νΈλ‘€λ¬λ‘ μ¬μ©λλ ν΄λμ€μμ λνλ λλ€. |
@Service | μ€νλ§ μ ν리μΌμ΄μ μμ μλΉμ€ ν΄λμ€μμ λνλ λλ€. |
@Repository | μ€νλ§ μ ν리μΌμ΄μ μμ 리ν¬μ§ν 리 ν΄λμ€μμ λνλ λλ€. |
@ComponentScan | μ»΄ν¬λνΈλ₯Ό κ²μνμ¬ μ€νλ§ λΉμΌλ‘ λ±λ‘νλ λ° μ¬μ©λ©λλ€. μ§μ λ ν¨ν€μ§μμ @Component μ΄λ Έν μ΄μ μ΄ μ§μ λ ν΄λμ€λ₯Ό κ²μν©λλ€. |
λ§μ΄ν¬λ‘μλΉμ€ ꡬμΆνκΈ°
1. κ°λ° νκ²½
λꡬ | λ²μ |
IntelliJ | 2023.03.04 |
Java | 17 |
Gradle | 8.5 |
SpringBoot | 3.2.3 |
2. Dependincies μΆκ°
- Lombok
- Spring Web
λ€λ₯Έ μμ‘΄μ±(dependency)μ μΆνμ νμμ μΆκ°ν μμ μ΄λ€.
3. λ§μ΄ν¬λ‘μλΉμ€ νλ‘μ νΈ μμ±
Spring Initializrλ₯Ό μ¬μ©νμ¬ λ§μ΄ν¬λ‘μλΉμ€ νλ‘μ νΈλ€μ μμ±ν΄ μ€λ€.
https://start.spring.io/ μ μ£Όμλ‘ Spring Initializrμ μ κ·Όκ°λ₯νλ€.
user-service
beverage-service
community-service
μμ±λ λ§μ΄ν¬λ‘μλΉμ€μ ν΄λ ꡬ쑰
μ°Έκ³ μλ£
https://adjh54.tistory.com/311
'Software Architecture > MSA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[MSA ꡬμΆνκΈ°] 2. Eureka μλ² κ΅¬μΆ (Service Discovery) (5) | 2024.03.12 |
---|---|
[MSA] Service Discovery (0) | 2024.03.12 |
[MSA] λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ₯Ό ꡬμΆνλ κΈ°μ (Spring Cloud) (0) | 2024.03.11 |
[MSA] λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ₯Ό ꡬμΆνλ κΈ°μ (0) | 2024.03.09 |
[MSA] λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ? (0) | 2024.03.08 |