ํ ๊ตญ๋ด SI์ ์ฒด ์ํํธ์จ์ด ์์ง๋์ด(SA,AA)
๋ค์์ ๋๊ท๋ชจ ์ฐจ์ธ๋ ํ๋ก์ ํธ ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ๋ฐ ์ค๊ณ๋ฐฉ๋ฒ ๋ฆฌ๋ฉ
๋ช ์ง๋, ์์ธ๊ณผํ๊ธฐ์ ๋ ํด๋ผ์ฐ๋,SW๊ณผ๋ชฉ ๊ฐ์
SK C&C,ํ๊ตญ์ ๋ณด๊ธฐ์ ์ฐ๊ตฌ์(kitri), LG์ ์ MSA๊ณผ์ ๊ฐ์
๋ฉํฐ์บ ํผ์ค, ํ๊ตญํ์คํํ, ํ๊ตญํ์งํํ MSA ๊ณผ์ ๋ฉํ ๋ง,์คํ๋ก์ค์์นด๋ฐ๋ฏธ ์น๊ฐ๋ฐ ๊ณผ์ ๋ฉํ ๋ง
์ ๋ฌธ๋ถ์ผ : ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก , ์ํํธ์จ์ด ์ํคํ ์ฒ/์ค๊ณ/๊ฐ๋ฐ ๊ธฐ๋ฒ
22๋ , ์ํค๋ถ์ค "๋๋ฉ์ธ์ฃผ๋๋ก ์์ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ", ์ ์
๊ตญ๊ฐํ์๊ต์ก์งํฅ์, K-MOOC "Microservice ์ค๊ณ ๋ฐ ๊ตฌํ " ๊ฐ์ข ๊ฐ๋ฐ ๋ฐ ๊ฐ์
Courses
Reviews
- Microservice Implementation (with EDA, Hexagonal, DDD)
- Understanding Microservices (with MSA Pattern)
- Microservice Design (with EventStorming, DDD)
- Understanding Microservices (with MSA Pattern)
- Understanding Microservices (with MSA Pattern)
Posts
Q&A
๊ฐ์๋ณด๋ค ๋ฐ๋ก ์ฌ์ญค๋ด ๋๋ค.
์๋ ํ์ธ์ ๊ฐ์์ ํ์ ํ์ ๋๋ค. ๋ต๋ณ๋๋ฆฌ๋ฉด1. ๊ฐ์์์ model์ ์ฌ์ฉํ ์ด์ ๊ฐ์์์๋ ๋๊ฐ์ง๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ตฌ์กฐ๋ฅผ ์ก์ผ๋ฉด ์๋ฌด๋๋ ๋ณต์กํด ์ง๊ณ , ํต์ฌ ๊ฐ๋ ์ ๋ฌ์ด ์ด๋ ต๊ธฐ ๋๋ฌธ์ model ์ JPA ๋งคํ์ ํ์ต๋๋ค.์ค์ ๋ก๋ ์์ AI๊ฐ ๋ต๋ณํ ๊ฒ์ฒ๋ผ Hexagonal Architecture์์ domain model๊ณผ persistence entity๋ ์๋ก ๋ค๋ฅธ ์ฑ ์์ ๊ฐ์ง๋ฏ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ ๋ง์ต๋๋ค.๋ค๋ง ์ค๋ฌด์์๋ ์ด๋ ๋น์ง๋์ค ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ฑ๊ฒฉ์ ๋ฐ๋ผ, ์๊ฒฉํ๊ฒ ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ๋ฅผ ์ค์ํ ์ ์๊ณ , ์ด๋์ ๋ ๋ชจ๋ธ ๋ด๋ถ์ or mapping๋ฅผ ํจ๊ป ํ๋ ํํ์ ์งํํ ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค.2. ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ์์์ ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ์๊ฒฉํ๊ฒ ์ค์ํ๋ ค๊ณ ํ๋ค๋ฉด ๋ณดํต ์๋์ ๊ฐ์ด ํจํค์ง๋ฅผ ๋๋์ด ๊ด๋ฆฌํฉ๋๋ค. framework โโโ jpaadapter โโโ entity โ JPA Entity ํด๋์ค๋ค ์์น domain โโโ model โ ์์ ๋น์ฆ๋์ค ๋ชจ๋ธ (์ ๊ทธ๋ฆฌ๊ฒ์ดํธ ๋ฃจํธ, VO ๋ฑ) 3. ๊ด๊ณ์ ์ญํ ๊ตฌ๋ถ ์ด๋ ๊ฒ ๊ตฌ๋ถ ํ์ ๋ ์ฑ ์ ๋ฐ ํน์ง์ ๋ค์๊ณผ ๊ฐ์์.domain.model :๋น์ฆ๋์ค ๊ท์น๊ณผ ๋๋ฉ์ธ ๋ก์ง . JPA, Spring ๋ฑ ์ธ๋ถ ๊ธฐ์ ์์กด ์์jpaadapter.entity :DB ๋งคํ ์ ์ฉ ํด๋์ค , @Entity, @Table ๋ฑ JPA Annotation ์ฌ์ฉ๋ ๊ณ์ธต์ Mapper๋ฅผ ํตํด ์ฐ๊ฒฐํฉ๋๋ค.Entity โ Domain Model ๋ณํ ์ฝ๋๊ฐ ์ด ๊ณ์ธต์์ ๋ด๋น๋ฉ๋๋ค.์ด๋ ๊ฒ ํ๋ฉด ๋๋ฉ์ธ์ ํ๋ ์์ํฌ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ง๋๊ณ , JPA ๊ต์ฒด๋ ๋ค๋ฅธ persistence ์ ๋ต ๋์ ์ ์ํฅ์ด ์ต์ํ๋ฉ๋๋ค.๋ต๋ณ์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ^ ^
- 0
- 2
- 24
Q&A
Aggregate ํ์์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌด๋ Entity ๋?
์๋ ํ์ธ์ ๊ฐ์์ ํ์ ํ์ ๋๋ค.domain์ ๊ตฌํํ ๋ ์ด๋ฐ ์ค์ฒฉ ๊ณ์ธตํ๋ ๋ชจ๋ธ์ ๋๋ฉ์ธ ๋ชจ๋ธ์์ ๋ฐ๋์งํ ๊ตฌ์กฐ๋ ์๋ ๊ฒ ๊ฐ๋ค์.์ฆ ๋๋ฉ์ธ ๋ชจ๋ธ์ ํ ๋จ์๊ฐ ๋๋ ์ด๊ทธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ๋ชจ๋ธ๋ง ํ ๋, ์ฌ๋ฌ๊ฐ์ ์ค์ฒฉ์ ์ธ ์ํฐํฐ๋ฅผ ์ต๋ํ ๊ฐ์ง์ง ์๊ฒ ์ค๊ณํด์ผ ํฉ๋๋ค.(์ด๊ทธ๋ฆฌ๊ฒ์ดํธ ์๋ ๊ฐ์ธ์ ์ผ๋ก ํ๊ฐ ์ ๋์ ์ํฐํฐ ์ค๊ณ๊ฐ ์ ์ ํ๋ค ์๊ฐํฉ๋๋ค.)๊ทธ๋ฐ ๊ตฌ์กฐ๋ฅผ ํผํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์งํํฉ๋๋ค. 1. Aggregate Root ๊ธฐ์ค์ผ๋ก ์ค๊ณDDD์์๋ ํ Aggregate Root(Aggregate์ ์ต์์ ์ํฐํฐ)์์ ๋ค๋ฅธ Aggregate Root๋ฅผ ์ง์ ์ฐธ์กฐํ์ง ์๋๋ก ๊ถ์ฅํฉ๋๋ค.์ฆ, A -> B -> C ํํ๊ฐ ์๋๋ผ A๊ฐ B์ ID๋ง ๊ฐ๊ณ , B๊ฐ C์ ID๋ง ๊ฐ์ง๋๋ก ์ค๊ณํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.2. Lazy Loading์ ๋๋ฉ์ธ ๋ ์ด์ด์์ ์ง์ ๊ตฌํJPA์ Lazy Loading์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, ์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.์๋ฅผ ๋ค์ด, A์์ B๋ฅผ ๊ฐ์ ธ์ฌ ๋, B์ ๋ฆฌ์คํธ๋ฅผ ๋ก๋ฉํ๋ ๊ฒ์ด ์๋๋ผ BRepository๋ฅผ ํตํด ํ์ํ ๋ ์กฐํํ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.class A { private List bIds; // ID๋ง ์ ์ฅ public List getBs(BRepository bRepository) { return bRepository.findAllByIds(bIds); } } ์ด๋ ๊ฒ ํ๋ฉด A๊ฐ B๋ฅผ ์ง์ ํฌํจํ์ง ์๊ณ ID๋ง ์ ์ฅํ์ฌ ํ์ํ ๋๋ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ต๋ณ์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ, ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 78
Q&A
ํฅ์ฌ๊ณค ์ํคํ ์ณ ๊ด๋ จํ์ฌ ๋ฌธ์๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. ๊ฐ์์ ํ์ ํ์ ๋๋ค.ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ๋ ํฌํธ ์ ์ด๋ํฐ ํจํด์ ์ ์ํ alistair cockburn๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ํํ์ ๋ชจ์ต์ผ๋ก ์๊ฐ๋๊ณ ์์ต๋๋ค.์ธ๊ธํ์ ๋ชจ๋ธ์ ์ธํฐ๋ท์ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ํผ์ ธ ์์ผ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ๊ฐ ๋ค์ํ ๋ณ์ข ์ด ์๊ณ ์ํฉ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ชจ๋ธ์ด ์์ ์ ์๋ค ์๊ฐํฉ๋๋ค.์ ๊ฐ ๊ฐ์ ์ ์ฐธ๊ณ ํ ๋ชจ๋ธ์ ๋ค๋น ๋น์์ด๋ผ์ 'ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ ์ค๊ณ์ ๊ตฌํ'์ด๋ผ๋ ์์ ์ ๋ชจ๋ธ์ ๋๋ค.ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ ๋ชจ๋ธ์ 3๊ฐ์ ํฅ์ฌ๊ณ ๋(๋๋ฉ์ธ,์ ํ๋ฆฌ์ผ์ด์ ,ํ๋ ์์ํฌ)๋ก ๋๋๊ณ ๊ฐ๊ฐ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ํฅ์ฌ๊ณค์ ์์๋ฅผ ์ ์ค์ผ์ด์ค-์ธํํฌํธ-์์ํํฌํธ๋ก ๊ตฌํํ๊ณ ์ ์ค์ผ์ด์ค๋ฅผ ์ธํฐํ์ด์ค๋ก ์ ์ํ๊ณ ์ธํํฌํธ๋ฅผ ๊ตฌํ์ฒด๋ก ํ์ฉํ์ต๋๋ค.๋ค๋น ๋น์์ด๋ผ์ ๋ฐฉ์์ ์ ์ค์ผ์ด์ค๋ฅผ ๋จ์ํ ๊ตฌํ์ฒด์ ์ญํ ๋ณด๋ค๋์ด๋ฐ ์ผ์ฝ์จ์ '์ ์ค์ผ์ด์ค ์๋๋ฆฌ์ค, '์ ์ค์ผ์ด์ค ๋ช ์ธ' ์ ๊ฐ๋ ์ผ๋ก ํ์ ํ ๊ฒ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ํฅ์ฌ๊ณค์ด ๊ฐ๋ ์๋ฏธ ์ฆ '์์คํ ์ด ์ ์ ํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ํจ๊ป ๋์ํ๋ ์ผ๋ จ์ ํ์์ ์งํฉ'๋ฅผ ๊ตฌํํ๋ค. ๋ฅผ ๊ฐ์กฐํ๊ธฐ ์ํด ์ ์ค์ผ์ด์ค๋ก ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ๊ณตํ ๊ธฐ๋ฅ(์ผ๋ จ์ ํ์ ์งํฉ์ผ๋ก ์๋๋ฆฌ์ค ํํ์)๋ฅผ ๋จผ์ ์ธํฐํ์ด์ค๋ก ์ ์ํ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค.์ฆ ๊ฐ๋จํ ๋งํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ํฅ์ฌ๊ณค์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋๋ฉ์ธ ํฅ์ฌ๊ณค์ด ๊ฐ์ง ๋น์ง๋์ค ์ฌ๋ฌ ๊ฐ๋ ์ ๋ณตํฉ์ ์ผ๋ก ํ์ฉํ์ฌ ๋น์ง๋์ค ๋ชฉ์ ์ ๋ง๋ ์๋๋ฆฌ์ค๋ฅผ ๊ตฌํํ๋ ๊ฒ์ธ๋ฐ, ๊ทธ๊ฑธ ๋ช ํํ ํํํ ๋ฐฉ์์ด ์ด๋ฐ ์ผ์ฝฅ์จ '์ ์ค์ผ์ด์ค ๋ช ์ธ'๋ผ๋ ๋ฐฉ์์ด๊ณ , ์ด๊ฒ์ ๊ฐ์กฐํ ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.์ ๋ ์ด ๋ฐฉ์์ด ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ ๋ชจ๋ธ์ '์ ์ค์ผ์ด์ค' ๋ผ๋ ๊ฐ๋ ์ ์ค๋ช ํ๋๋ฐ ํ๋น ํ๋ค๊ณ ์๊ฐํ์ฌ ์ด ๋ฐฉ์์ผ๋ก ๊ฐ์๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.๋ฌผ๋ก Management Uiti๋์ด ์ ์ํ์ ๊ตฌ์กฐ๋ก ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ ๊ตฌ์กฐ๋ฅผ ์ก์๋ ํ๋นํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Management Uiti๋์ด ์ ์ํ์ ๊ตฌ์กฐ๋ ๋น์ง๋์ค์ ๊ธฐ์ ์ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ์ฌ ์ด๋ป๊ฒ ์ ์ฐํ๊ฒ ํ ๊ฒ ์ธ๊ฐ? ์ ์ด์ ์ ๋ง์ท๋ค๋ฉด , ๋น์์ด๋ผ์ ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ๋ ํ ๋ฐ ๋ ๋์๊ฐ ๊ทธ๋ ๋ค๋ฉด ๋น์ง๋์ค ๊ฐ๋ ๊ณผ ํ๋์ ์ด๋ป๊ฒ ๊ตฌ์กฐํ ํ ๊ฒ์ธ๊ฐ๋ฅผ ์ข ๋ ์๊ฐํ ๊ฒฐ๊ณผ๋ผ ํ๋จ๋ฉ๋๋ค.๋ต๋ณ์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ๊ฐ์ฌํฉ๋๋ค.
- 2
- 2
- 121
Q&A
๋ค๋ฅธ BC ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ๋ด๋น ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ด์ฉํ๋์?
๊ฐ์์์ ๋๋ค.^ ^ AI๊ฐ ์ด๋ฏธ ๋ต๋ณ์ ๋๋ ธ๋ค์. AI ๊ฐ ๋งํ๋ฐ์ ๊ฐ์ด API,์ด๋ฒคํธ๊ธฐ๋ฐ ํต์ ,๋ฐ์ดํฐ ๋ณต์ ๋ก ํด๊ฒฐํ ์ ์์ผ๋ฉฐ, ์์ธ๋ก ๋ฐฑ์๋ ์๋น์ค๊ฐ์ ์ฐ๊ด๊ด๊ณ๋ณด๋ค๋ ํ๋ก ํธ์๋ ๋จ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ๊ฐ ์๋ ์์ต๋๋ค.์๋ฅผ ๋ค๋ฉด ๋์ฌ์๋น์ค๊ฐ ํ์ํ ๋์์ ๋ณด์ ์ฌ์ฉ์์ ๋ณด๋ฅผ ํ๋ก ํธ์ ์ด๋ฏธ ์กฐํ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์์ต๋๋ค. ๋ฌผ๋ก ๋ฐฑ์๋ ๋์ฌ ์๋น์ค์์ ์ค์ ์ฌ์ฉ์๊ฐ ์กด์ฌํ๋์ง? ์ ๋์๊ฐ ๋์ฌ๊ฐ๋ฅํ์ง์ ๋ํ ๊ฒ์ฆ์ ํ์ํฉ๋๋ค.์ดํ ๊ฐ์๋ฅผ ๋ ๋ฃ๋ค ๋ณด์๋ฉด ๋ ๊น์ ์ดํด๊ฐ ๊ฐ๋ฅํ์ค ๊ฒ์ด๋ผ ํ๋จ๋ฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 3
- 81
Q&A
VO ํด๋์ค์ ๋ถ๋ณ ํ๋ ์ ์ธ์ ํ์ง ์์ผ์ ์ด์ ?
๊ฐ์์ ํ์ ํ์ ๋๋ค.๋ต๋ณ๋๋ฆฌ๋ฉด ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์์ vo๋ฅผ ์ค๊ณํ ๋ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ ์์น ์ค ํ๋์ ๋๋ค. ๋ฐ๋ผ์ private final๋ก ํ๋๋ฅผ ์ ์ธํ์ฌ vo ๋ด๋ถ ์ํ๊ฐ ๋ณ๊ฒฝ๋์ง ์๊ฒ ์์ ํ๊ฒ ํจ ์ข์ ์ค๊ณ ๋ฐฉ๋ฒ์ ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ๋ด๋ถ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด,List,Map๋ฑ์ด ์๋ค๋ฉด ์ด ๋ํ ๋ชจ๋ ๋ถ๋ณ์ผ๋ก ์ ์งํด์ผ ํ๊ณ ์ธ๋ถ ๊ฐ์ฒด ์ฐ๋ ์ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ ์ฝ๋ ์์ฑ ๋ฑ ๊ฐ์ฒด ๋ด๋ถ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ์ถ๊ฐ ์ ์ธ ์ฒ๋ฆฌ ์ฝ๋ ์์ ์ด ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ ๊ฒ์ ์ค์์ฑ๊ณผ ๊ทธ๊ฒ์ ์ ์งํ๊ธฐ ์ํ ๋ณต์ก์ฑ ์ถ๊ฐ ๋ฑ์ ํธ๋ ์ด๋ ์คํ ํ ํ์์ฑ์ด ์์ต๋๋ค.๋ณธ ๊ฐ์์์๋ ์ด๋ฌํ ์ ์ ๊ณ ๋ คํ์ฌ ,ํนํ ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ final์ฒ๋ฆฌํ์ง ์๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ rentalItem ์ ์ด์ ๋ชจ๋ธ๋ง ๊ฐ์ ์์ VO ๋ก ์ ์ธํ์ผ๋ overDued์ ๊ฐ์ด ๋ณ๊ฒฝ๋จ์ผ๋ก ๋ถ๋ณ์ฑ์ ์์์ผ๋ก์ ์ํฐํฐ๋ก ๋ค์ ๊ฐ๋ ์ ์ ํ ๋ถ๋ถ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ํฐํฐ์์๋ @Entity ์ฒ๋ฆฌ๋ฅผ ์ ํ์ ์ ์ง์ ์ฃผ์ จ๋๋ฐ JPA์ @Entity์ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD, Domain-Driven Design)์์์ ์ํฐํฐ(Entity)๋ ์๋ก ๋ค๋ฅธ ๋งฅ๋ฝ์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ ๋๋ค. ๋ ๊ฐ๋ ๋ชจ๋ "์ํฐํฐ"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋ชฉ์ ๊ณผ ์ด์ ์ด ๋ค๋ฆ ๋๋ค.DDD์ ์ํฐํฐ ์ํ์ ๋์ : ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ํ์(๋ฉ์๋)๋ฅผ ํฌํจ์๋ณ์ฑ(์๋ณ์์ ๊ธฐ์ค์ผ๋ก ๋์ผ์ฑ ํ๋จ) JPA์ ์ํฐํฐ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๊ธฐํ์ ๋ชฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๊ณผ ๋งคํ๋จ์ ์๋ฏธ๋ฐ๋์ ๊ธฐ๋ณธํค๊ฐ ์กด์ฌํด์ผ ํจ.(@id)๋ฌผ๋ก ํ์ค์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งคํ์ JPA์ @Entity์ DDD์ ์ํฐํฐ๋ ํจ๊ป ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ ์ง๋ง ๋ฐ๋์ ๊ทธ๋์ผ๋ง ํ๋ ๊ฒ๋ ์๋๋๋ค.์ฆ ๋น์ง๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ์ํ or๋งคํ๊ณผ๋ ์ ํ ๋ค๋ฅธ ์์ญ์ด๋ผ ์๊ฐํฉ๋๋ค.๋ฐ๋ผ์ RentalItem์ ๊ฒฝ์ฐ ์ด๊ธฐ์ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง ๊ด์ ์์ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ vo๋ก ์ค๊ณํ์ผ๋ overdued๋ฑ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด ๋ถ๋ณ์ฑ์ด ๊นจ์ง๋ค ํ๋จํ์ฌ ์ํฐํฐ๋ก ๊ฐ๋ ์ ๋ณ๊ฒฝํ ๊ฒ์ด์ง๋ง ์ญ์ vo์ ์ฑ๊ฒฉ์ด ๊ฐํ๊ธฐ ๋๋ฌธ์ vo์ฒ๋ผ ์ฒ๋ฆฌ ํ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
- 0
- 2
- 148
Q&A
RentalCard ์ calculateLateFee ๋ฉ์๋ ๊ตฌํ์ด ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค.
tkwoo๋ ์๋ ํ์ธ์. ๊ฐ์์์ ๋๋ค.๋ค ์ง์ ํ์ ์ ์ด ๋ง์ต๋๋ค. ์ ๊ฐ ์ฝ๋์ ๊ฒฐํจ์ ์ธ์งํ๊ณ ์ ๊ณตํ๋ ์์ค์ฝ๋์๋ ์ดํ ๋ณ๊ฒฝํ์๋๋ฐ, ๋์์ ์์๋ ๊ณต์ง๋ฅผ ์ ๋๋ก ํ์ง ๋ชปํ๋ค์. ์ฃ์กํฉ๋๋ค. ๋ค์ ํ์ธํด์ ๊ณต์ง๋ฅผ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ง์ ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 122
Q&A
20๋ถ์ ๋์ ๋ง์ ํ์ ๋ด์ฉ ์ง๋ฌธ ์์ต๋๋ค.
์ ์ํคํ ์ฒ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ๊ฐ๋ ์ ์ธ ์ฉ์ด๋ค์ ์ฌ์ฉํ์ง๋ง ์ด๋ฐ ๊ธฐ๋ฅ์ ์นดํ์นด ๋งค์ปค๋์ฆ์ด ์ด๋ฏธ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋จํ ๊ตฌํํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฃผ๋ฌธ ์๋น์ค๊ฐ ์๋ก์ด ์ฃผ๋ฌธ์ ์์ฑํ๋ฉด, ์ด ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ Kafka์ ์ด๋ฒคํธ๋ก ๋ณด๋ด๊ณ , ์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค๊ฐ ์ด ์ด๋ฒคํธ๋ฅผ ์ฝ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ๋ฌธ ์ด๋ ฅ์ ์ ์ฅํ ํ, ๋ฉ์์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์์ ํ์ธํ๊ณ Kafka์์ ํด๋น ๋ฉ์์ง๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.์๋๋ ์ด ๊ณผ์ ์ ๊ฐ๋จํ ์ํ ์ฝ๋์ ํจ๊ป ์ค๋ช ํ๊ฒ ์ต๋๋ค.1. Kafka์ ์ฃผ๋ฌธ ์ด๋ฒคํธ ๋ณด๋ด๊ธฐ (์ฃผ๋ฌธ ์๋น์ค)์ฃผ๋ฌธ ์๋น์ค๊ฐ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ Kafka์ ๋ณด๋ด๋ ๊ณผ์ ์ ๋๋ค. Python์ kafka-python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Kafka์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์์ ์ ๋๋ค.from kafka import KafkaProducer import json # Kafka ํ๋ก๋์ ์ค์ producer = KafkaProducer( bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8') ) # ์ฃผ๋ฌธ ๋ฐ์ดํฐ order = { 'order_id': '12345', 'customer_id': '67890', 'amount': 100.0 } # Kafka ํ ํฝ์ ์ฃผ๋ฌธ ์ด๋ฒคํธ ์ ์ก producer.send('order-topic', order) producer.flush()2. ์ฃผ๋ฌธ ์ด๋ ฅ ์ ์ฅ ๋ฐ Kafka ๋ฉ์์ง ์ญ์ (์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค)์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค๊ฐ Kafka์์ ๋ฉ์์ง๋ฅผ ์ฝ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ , ์ ์ฅ์ด ์๋ฃ๋๋ฉด Kafka์์ ํด๋น ๋ฉ์์ง๋ฅผ ์ ๊ฑฐํฉ๋๋ค. Python์ kafka-python๊ณผ mysql-connector-python์ ์ฌ์ฉํ ์์ ์ ๋๋ค.from kafka import KafkaConsumer, KafkaProducer import mysql.connector import json # Kafka ์ปจ์๋จธ ์ค์ consumer = KafkaConsumer( 'order-topic', bootstrap_servers='localhost:9092', auto_offset_reset='earliest', group_id='order-history-group', value_deserializer=lambda x: json.loads(x.decode('utf-8')) ) # Kafka ํ๋ก๋์ ์ค์ producer = KafkaProducer( bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8') ) # MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ db_conn = mysql.connector.connect( host='localhost', user='youruser', password='yourpassword', database='yourdatabase' ) cursor = db_conn.cursor() # Kafka ๋ฉ์์ง ์ฒ๋ฆฌ for message in consumer: order = message.value order_id = order['order_id'] customer_id = order['customer_id'] amount = order['amount'] # ์ฃผ๋ฌธ ์ด๋ ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ cursor.execute( "INSERT INTO OrderHistory (order_id, customer_id, amount) VALUES (%s, %s, %s)", (order_id, customer_id, amount) ) db_conn.commit() # ๋ฉ์์ง ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ํ Kafka์์ ๋ฉ์์ง ์ญ์ (offset ์ปค๋ฐ) consumer.commit() # ๋ฉ์์ง ์ ์ก ์ํ๋ฅผ ํ์ธํ๊ณ ๋ก๊ทธ ๊ธฐ๋ก ๋๋ ๋ค๋ฅธ ์์ ์ํ print(f"Order {order_id} processed and saved to database.") ์ฝ๋ ๋ณต์ฌ์์ฝ์ฃผ๋ฌธ ์๋น์ค: ์ฃผ๋ฌธ์ Kafka ํ ํฝ์ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค.์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค:Kafka์์ ๋ฉ์์ง๋ฅผ ์ฝ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ๋ฌธ ์ด๋ ฅ์ ์ ์ฅํฉ๋๋ค.๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ํ Kafka์ ์คํ์ ์ ์ปค๋ฐํ์ฌ ๋ฉ์์ง๊ฐ ๋ ์ด์ ์ฒ๋ฆฌ๋์ง ์๋๋ก ํฉ๋๋ค.์๋ฐํ ๋งํ๋ฉด Kafka์์ ์คํ์ (offset)์ ํน์ ํํฐ์ ๋ด์์ ๋ฉ์์ง์ ์์น๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ ์๋น์๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ํ, Kafka์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ํด๋น ๋ฉ์์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค๋ ๊ฒ์ ๋ํ๋ด๊ธฐ ์ํด ์คํ์ ์ ์ปค๋ฐํฉ๋๋ค. ์คํ์ ์ปค๋ฐ์ Kafka๊ฐ ๋ฉ์์ง๋ฅผ ์ด๋ ์ง์ ๊น์ง ์ฝ์๋์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ฆ, ์ปจ์๋จธ๊ฐ ๋ค์์ ์ฌ์์๋ ๋, ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐ๋ ์คํ์ ๋ถํฐ ๋ฉ์์ง๋ฅผ ์ฝ๊ธฐ ์์ํฉ๋๋ค. ๋ฐ๋ผ์ ํ๋ฒ ์ ๋ฌ๋ ๋ฉ์์ง๊ฐ ๋ค์ ์ ๋ฌ๋์ง ์์์ ๋ณด์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์นดํ์นด์ ๋ฉ์์ง๋ ์นดํ์นด ๋ก๊ทธ ๋ณด์กด๊ธฐ๊ฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ญ์ ๋๊ฒ ํ๋ฉด ๋ฉ๋๋ค.
- 0
- 2
- 178
Q&A
CQRS 6๋ถ์ ๋ ๊ฐ์ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. ๊ฐ์์ ์ ๋๋ค.์ฌ๊ธฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ์คํ๋ง ์ด๋ฒคํธ ํธ๋๋ฌ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ ์ ์ ๊ธธํ ๊ฒ์ ์๋๊ณ ์. ๊ฐ๋ ์ ์ธ ์๋ฏธ๋ก ๋ง์ ๋๋ฆฐ๊ฒ๋๋ค. cqrs๊ฐ ๋ช ๋ น( CUD)์ ์กฐํ( R)๋ฅผ ๋ถ๋ฆฌํ์ฌ ํจ์จ์ฑ์ ๋์ด๋ ํจํด์ธ๋ฐ์. ์๋ฅผ ๋ค๋ฉด ์ฃผ๋ฌธ ์๋น์ค๊ฐ ์ปค๋งจ๋ ์๋น์ค ์ญํ ์ ์ํํ๊ณ ์ฃผ๋ฌธ์ด๋ ฅ ์๋น์ค๊ฐ ์กฐํ์๋น์ค๋ฅผ ์ํํ๋ค๋ฉด, ๊ฐ๊ธฐ ์๋น์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฃผ๋ฌธ์ด ์ ๋ ฅ๋๊ณ , ์ฃผ๋ฌธ์ด๋ ฅ์ด ์ ๋ ฅ๋๋ ํธ๋์ ์ ์ ๋ถ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ๋ถ์ฐ ํธ๋์ ์ ์ด ์ํ๋์ด ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ 2๊ฐ ์๋น์ค์ ์ ํฉ์ฑ์ ๋ง์ถฐ์ฃผ๊ธฐ ์ํด ์ฃผ๋ฌธ ์๋น์ค์์ ์ฃผ๋ฌธ ์ ๋ ฅ ํธ๋์ ์ ์ ํจ๊ป ๋น๋๊ธฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ์ ์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค์ ์ฃผ๋ฌธ์ด ๋ค์ด์๋ค๋ ๊ฒ์ ์๋ฆฌ๋ ๊ฒ์ด์ฃ . ์ฌ๊ธฐ์ ์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ์ด๋ฒคํธ๊ฐ ๋ค์ด์๋ค๋ ๊ฒ์ ์์์ฑ๋ ๊ฐ๋ ์ ์ธ ๊ธฐ๋ฅ๋ฅผ ์ค๋ช ํ๊ณ ์๋ ๊ฒ๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ์ ๋ก ๊ตฌํ ๊ฐ๋ฅํ ์ ์์ฃ . ์ฃผ๋ฌธ์ด๋ ฅ์๋น์ค์์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํตํด ์ฃผ๋ฌธ์ด ์ด๋ฒคํธ๋ฅผ ์๋ณํ ๋ค ์ฃผ๋ฌธ ์ด๋ ฅ ์๋น์ค์ ์ฃผ๋ฌธ ์ด๋ ฅ์ ์์ฑํ๋ฉด ์ฃผ๋ฌธ์๋น์ค์ ์ ํฉ์ฑ ์ด ๋ง๊ฒ ๋๋ ๊ฑฐ์ฃ .
- 0
- 2
- 202
Q&A
์ง๋ฌธ๋๋ฆฝ๋๋ค,
๊ฐ์์ ํ์ ํ์ ๋๋ค. ๋ต๋ณ ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.๋จผ์ ๊ฐ๋ ์ ์๋ถํฐ ๋ช ํํ ํ๋ฉด, ๋ ธ๋ ๋ฐ ์ปจํ ์ด๋: ๋ ธ๋๋ ์ปจํ ์ด๋๊ฐ ์คํ๋๋ ๋ฌผ๋ฆฌ์ ๋๋ ๊ฐ์ ๋จธ์ ์ ๋๋ค. Kubernetes ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋๋ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ํธ์คํ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 3๊ฐ์ ๋ ธ๋์ 8๊ฐ์ ์ปจํ ์ด๋๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ์ปจํ ์ด๋๋ Kubernetes ์ค์ผ์ค๋ฌ์ ๊ฒฐ์ ์ ๋ฐ๋ผ 3๊ฐ ๋ ธ๋์ ๊ฑธ์ณ ์์ฝ๋ฉ๋๋ค. ์ค์ผ์ค๋ง: Kubernetes ์ค์ผ์ค๋ฌ๋ ๋ ธ๋์ ์ปจํ ์ด๋(Pod๋ก ํจํค์ง๋จ)๋ฅผ ๋ฐฐ์นํ๋ ์ผ์ ๋ด๋นํฉ๋๋ค. ์ด๋ taints , tolerations, affinity ๊ท์น๊ณผ ๊ฐ์ ๋ค์ํ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ฉ๋๋ค. ๋ชฉํ๋ ๋ก๋ ๊ท ํ์ ๋ง์ถ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ํน์ ์ ์ฝ ์กฐ๊ฑด์ด๋ ์ ํธ๋ ๊ท์น์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด 8๊ฐ์ ์ปจํ ์ด๋(๊ฐ ์ปจํ ์ด๋๊ฐ ์์ฒด ํฌ๋์์ ์คํ๋๋ค๊ณ ๊ฐ์ )๊ฐ 3๊ฐ ๋ ธ๋์ ๋ฐฐํฌ๋ฉ๋๋ค. ๊ทธ๋ ์ง๋ง ๋ถํฌ๊ฐ ๊ณ ๋ฅด์ง ์์ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด๋ ธ๋ 1์๋ ํฌ๋๊ฐ 3๊ฐ ,๋ ธ๋ 2์๋ ํฌ๋๊ฐ 3๊ฐ , ๋ ธ๋ 3์๋ ํฌ๋๊ฐ 2๊ฐ ์์ ์ ์์ต๋๋ค. ์์ฝํ๋ฉด Kubernetes๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ๋ ธ๋ ์ ์ฒด์ ๊ท ๋ฑํ๊ฒ ๋๋์ง ์์ต๋๋ค. ๋์ ๋ฆฌ์์ค ๊ฐ์ฉ์ฑ ๋ฐ ๊ธฐํ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฝํฉ๋๋ค. ๋ฐฐํฌ๋ ์ฌ์ฉ์๊ฐ ์ค์ ํ ๋ค์ํ ๊ตฌ์ฑ ๋ฐ ์ ์ฝ ์กฐ๊ฑด์ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. Spring Cloud API Gateway ์์์ NGINX๋ฅผ Ingress ์ปจํธ๋กค๋ฌ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ง์ํ์ ๋ฐ๋๋ก๋คํธ์ํฌ ์ง์ฐ ๊ฐ๋ฅ์ฑ์ด ์์ ์ ์์ผ๋ ๋งค์ฐ ๊ฒฝ๋ฏธํ ๊ฒ ๊ฐ๋ค์. ์ด๋ฅผ ์ด์ค ํ๋ก์ ๋ ์ด์ด๋ก ๊ตฌ์ฑํ๋ค๊ณ ํ๋๋ฐ์. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ญํ ์ ์ค ์ ์๊ฒ ์ฃ . NGINX ์์ ์ปจํธ๋กค๋ฌ: Kubernetes ํด๋ฌ์คํฐ๋ก ๋ค์ด์ค๋ ์ธ๋ถ ํธ๋ํฝ์ ์ฒ๋ฆฌํฉ๋๋ค. SSL ์ข ๋ฃ, ํธ์คํธ ์ด๋ฆ ๋๋ ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ ๊ณผ ๊ฐ์ ์์ ์ ์ํํ๊ณ ๋ก๋ ๋ฐธ๋ฐ์ฑ๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.Spring Cloud API ๊ฒ์ดํธ์จ์ด: ํด๋ฌ์คํฐ ๋ด์์ ์๋ํ๋ฉฐ ๋ผ์ฐํ , ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ฌผ๋ก ์ธ์ฆ, ์๋ ์ ํ ๋ฑ๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๊ฐ ๊ณ์ธต์ ์ถ๊ฐ ์ฒ๋ฆฌ ๋ฐ ๋คํธ์ํฌ ํ์ผ๋ก ์ธํด ์ฝ๊ฐ์ ์ค๋ฒํค๋ ๋ฐ ์ ์ฌ์ ์ผ๋ก ๋๊ธฐ ์๊ฐ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง๋ง ์ด๋ฐ ์ํคํ ์ฒ ๊ฒฐ์ ์ ์ ์ฐ์ NGINX์ Spring Cloud API ๊ฒ์ดํธ์จ์ด๊ฐ ๋ชจ๋ ํ์ํ์ง ๊ณ ๋ฏผํ ํ์๊ฐ ์์ ๊ฒ ๊ฐ๋ค์. ๋ ์ด๋ฐ ๊ฒฐ์ ์์๋ ๊ฐ ์์์ ์๋์ ๊ฐ์ ์ฅ๋จ์ ์ ๊ณ ๋ คํด์ผ ํ ๊ฒ ๊ฐ๋ค์. NGINX: ํด๋ฌ์คํฐ ๊ฐ์ฅ์๋ฆฌ์์ ํธ๋ํฝ ๋ผ์ฐํ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฒ๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ Spring Cloud API Gateway: ๋์ ๋ผ์ฐํ , ์๋ ์ ํ, ์๋น์ค ๊ฐ ํต์ ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณต. ๋ค ๋ ๋ง์ ๋ฌผ๋ฆฌ์ ์๋ฒ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ํ์ฅํ๋ ๊ฒ์ ์ฉ๋๊ณผ ๋ณต์๋ ฅ์ ๋์ด๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ต๋๋ค , ๊ทธ๋ ์ง๋ง k8s ์ ๊ฐ์ ๊ฒฝ์ฐ ์ํํ Pod Autoscaling ๋ฅผ ์ฐ์ ๊ณ ๋ คํ๊ณ ์ด๊ฒ์ด ํ๊ณ์ ๋๋ฌํ ๊ฒฝ์ฐ Cluster Autoscaler๋ฅผ ๊ตฌํํ์ฌ ๋จ๊ณ์ ์ผ๋ก Pod ๋ฐ ๋ ธ๋ ์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ Pod Autoscaling ๋ฅผ ๊ณ ๋ คํ์ฌ ๋ ํฌ๊ฑฐ๋ ๋ ๊ฐ๋ ฅํ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์์ ๋ ธ๋๋ฅผ ๋ง์ด ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ ํจ๊ณผ์ ์ผ ์ ์์ต๋๋ค. ๋น์ฐํ private ๋ง์์๋ k8s๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.์ ๋ก์ปฌ์ k8s ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ๋ฐ/ํ ์คํธ: ๋ ธ๋ 1๊ฐ(๋ง์คํฐ ๋ฐ ์์ ์ ์ญํ ์ด ๋ชจ๋ ํฌํจ๋ ๋จ์ผ ๋ ธ๋ ์ค์ ) ex) Minikube๊ธฐ๋ณธ ํ๋ก๋์ : ๋ง์คํฐ ๋ ธ๋ 1๊ฐ + ์์ ์ ๋ ธ๋ 1๊ฐ(๊ณ ๊ฐ์ฉ์ฑ ๋ถ์กฑ์ผ๋ก ์ธํด ํ๋ก๋์ ์๋ ์ ํฉํ์ง ์์)๊ถ์ฅ ํ๋ก๋์ : ๋ง์คํฐ ๋ ธ๋ 3๊ฐ + ์์ ์ ๋ ธ๋ 2๊ฐ(๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ๋ด๊ฒฐํจ์ฑ์ ์ํด)
- 0
- 1
- 144
Q&A
๋ ์ด์ด๋ ์์ผํ ์ฒ ์คํ์ผ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
๋ค mvc๋ชจ๋ธ์์ j2eeํจํด์ dto ๋ vo๊ฐ ๋ชจ๋ธ์ ์ญํ ์ ์ํํ๋ ๊ฑฐ์ฃ .์ฆ ๋ ์ด์ด๋ ์ํคํ ์ฒ ์คํ์ผ์ ๋ ผํ๋ฉด์ mvc๋ชจ๋ธ๊ณผ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ์ดํดํ๋ ๋ถ๋ค์ด ๋ง์์ ์ธ๊ธํ ๋ด์ฉ์ด๊ณ ์. ๊ตณ์ด mvc๋ชจ๋ธ์ ๋ ์ด์ด๋ ์ํคํ ์ฒ์ ๋งคํํด๋ณด๋ฉด ํ๋ฆฌ์ ํ ์ด์ ๋ ์ด์ด์ ์ญํ ๊ณผ ๋งคํ๋ฉ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋๋ฒ์งธ ์ง๋ฌธ์ ๋ต๋ณ์ ๋๋ฆฌ๋ฉด, ๋ฐ์ดํฐ ์์ธ์ค ๊ณ์ธต์ ์ ๊ฐ ๋ ์ด์ด๋ ์ํคํ ์ฒ ์๋ฅผ ๋ค๋ฉฐ, 4๊ฐ์ธต (ํ๋ฆฌ์ ํ ์ด์ ,๋น์ง๋์ค,ํผ์์คํด์ค,๋ฐ์ดํฐ๋ฒ ์ด์ค) ์ด๋ ๊ฒ ์ ์ํ๋๋ฐ ์ด๊ฑด ๊ฐ๋ณ ํ์ฌ ๋ฐ ์์คํ ๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ฉ์ด๋ ๋ค๋ฅผ ์ ์๊ณ ์. ์ด๋ค ํ๋ก์ ํธ ์์๋ (ํผ๋ธ๋ฆฌ์ฑ,์๋น์ค,๋น์ง๋์ค๋ก์ง,๋ฐ์ดํฐ์์ธ์ค)์ด๋ฐ์์ผ๋ก ๊ตฌ๋ถํ๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ ์ง๋ง ๋ณดํต ๋ฐ์ดํฐ ์์ธ์ค ๊ณ์ฆ์ ํผ์ค์ํด์ค ๊ณ์ธต๊ณผ ๊ฐ์ ์ฉ์ด๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 159