๐ ๋ฐฐ์ด ๊ฒ
AWS VPC
์ฝ๋์ค์ฟผ๋ ํธ๋ ์ค์ ๋ง์คํฐ ํด๋์ค ์๊ฐ์ Network์ AWS์ VPC์ ๋ํด ์ด๋ก ๊ณผ ์ค์ต์ ๋ฐฐ์ ๋ค.
CIDR(Classless Inter-Domain Routing)
CIDR๋ ํด๋์ค ์๋ ๋๋ฉ์ธ ๊ฐ ๋ผ์ฐํ ๊ธฐ๋ฒ์ผ๋ก, ๊ธฐ์กด ๋คํธ์ํฌ ํด๋์ค(A, B, C, ...)๋ฅผ ๋์ฒดํ์๋ค. ๊ธฐ์กด ๋คํธ์ํฌ ํด๋์ค์ ๊ณ ์ ๋ ๋คํธ์ํฌ/ํธ์คํธ ๊ฐ์๋ฅผ ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๊ฒ ๋ง๋ค ์ ์๊ฒ prefix๋ฅผ ์ปค์คํ ์ค์ ํ ์ ์๋ค. ๊ธฐ์กด ๋คํธ์ํฌ ํด๋์ค๋ฅผ ๋์ฒดํ๋ค๊ณ ์๊ฐ ๋ชปํ๊ณ ์์๋ค.
VPC
AWS - VPC(Virtual Private Cloud)์ด๋? : AWS์์ ๋ ๋ฆฝ๋ ๊ฐ์ ๋คํธ์ํฌ ๋ง๋ค๊ธฐ ๊ธ์ ์ฐ๋ฉฐ VPC ๊ธฐ๋ณธ์ ์์ฝํ์๋ค. ๋ถ์กฑํ๋ ๋ด์ฉ์ ํธ๋ ์ค๊ฐ ์ฑ์์คฌ๋ค.
NAT์ ์ฌ์ฉํ์ฌ private ์๋ธ๋ท์ ec2๊ฐ ์ธ๋ถ์ ํต์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ
1. NAT ๊ฒ์ดํธ์จ์ด ์๋น์ค ์ฌ์ฉ
AWS๊ฐ ํธํ๊ฒ NAT์ ์๋น์ค๋ก ๋ง๋ค์๋ค. ๊ณผ๊ฑฐ์ 2๋ฒ ๋ฐฉ๋ฒ์ผ๋ก ์ง์ NAT์ ec2๋ก ๋ง๋ค์์ง๋ง ์ค์ ํ๊ธฐ ์ด๋ ต๊ณ ๋ถํธํ๋ค. ๋ทํ๋ฆญ์ค๊ฐ ๋ถํธํด ์ง์ ๊ณ ๊ฐ์ฉ์ฑ NAT์ ๋ง๋ค์๊ณ , ์ด์ AWS๊ฐ ์๋น์ค๋ก NAT ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ง๋ค์๋ค๊ณ ํ๋ค.
2. NAT ์ธ์คํด์ค๋ฅผ ์ง์ ๋ง๋ค์ด ์ฌ์ฉ
- ec2์ ๋ฐฉํ๋ฒฝ ์ต์ ์ ๋ณ๊ฒฝํ๋ค (MASQUERADE)
- ๋ณด์ ๊ทธ๋ฃน์ ์ค์ ํ๋ค.
- ๋ผ์ฐํ ํ ์ด๋ธ์ NAT์ ์ถ๊ฐํ๋ค
3. private ์๋ธ๋ท์ ํญ์ ์ธ๋ถ์ ์ฐ๊ฒฐํ ํ์๊ฐ ์์ผ๋ ์ ๊น public ์ธํฐ๋ท ๊ฒ์ดํธ์จ์ด + ํ๋ ฅ์ IP๋ฅผ ์ฐ๊ฒฐํ๋ค.
ssh key forwarding
private ์๋ธ๋ท์ ec2์ ssh๋ก ์ฐ๊ฒฐํ๋ ค๋ฉด ์ด๋ป๊ฒํ ๊น?
๋์ผ VPC์ public subnet ec2์ ssh๋ก ์ ์ํ๋ค. ๋์ผ ๋คํธ์ํฌ ๊ฐ์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ public subnet ec2์์ private subnet ec2์ pem ํค๋ฅผ ๊ฐ์ง๊ณ ์ ์ํ๋ค. ์ด๋ public subnet ec2 ์์ฒด์ pem ํค๋ฅผ ์ ์ฅํ๊ณ ์์ผ๋ฉด ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. pubic subnet ec2๊ฐ ๋ซ๋ฆฌ๋ฉด private pem ํค๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ssh key forwarding ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ public subnet ec2์์ pem ํค๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์๋ ์ ์ํ ํด๋ผ์ด์ธํธ PC์์ pemํค๋ฅผ ํ ๋ฒ์ ๊ด๋ฆฌํ์ฌ ๋ณด๋ค ์์ ํ๊ฒ ์ ์ํ ์ ์๋ค.
+a)
- ์ฝ์ฟผ ๋ฉค๋ฒ ์๋ฏธ์ ์ง๋ฌธ๊ณผ ํธ๋ ์ค์ ๋ต๋ณ : AWS ec2์์ apt, apt-get ์ ์ฌ์ฉํด ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ์์ฒด AWS๋ง ํจํค์ง ๊ด๋ฆฌ์ ์๋ฒ์ ์ฐ๊ฒฐ๋์ด ํจํค์ง๋ค์ด ์ค์น๋๋ค.
์ด๋ private ์๋ธ๋ท์ ์ธ๋ถ์ ์ฐ๊ฒฐ๋ ๋คํธ์ํฌ๊ฐ ์์ด๋ ๋ด๋ถ๋ง์ ์ฌ์ฉํด ํจํค์ง๋ฅผ ๋ค์ด ๋ฐ์ ์ ์์ ๊ฑฐ ๊ฐ์ง๋ง ๋ถ๊ฐ๋ฅํ๋ค.
- AWS ์๋น์ค์ธ RDS๋ฅผ ์ฌ์ฉํ๋ฉด NAT ์ฐ๊ฒฐํ์ง ์์๋ ์ฐ๊ฒฐ์ ์์ฝ๊ฒ ํ ์ ์๋ค.
์๋ฐ์ฑ ํ๋ก์ ํธ
ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค. ์ด๋ฒ์๋ iOS 2๋ช , BE 2๋ช ์ด 3์ฃผ๊ฐ ๋ชจ์ฌ Airbnb์ ์ ์ฌํ ์๋ฐ ์ฑ์ ๊ฐ๋ฐํ๋ค. (์ ์ฅ์)
BE ๊ธฐ์ ์คํ์ ์๋์ ๊ฐ๋ค.
- spring security๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Github OAuth + JWT๋ก ๋ก๊ทธ์ธ ๊ตฌํ
- JPA
- ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์๋ฅผ ์ํ Mockup API ์ฌ์ฉ
- Swagger
- Elasticsearch๋ฅผ ํ์ฉํ ๊ฒ์
- ๋ฐฐํฌ (VPC๋ฅผ ํ์ฉํ ๋คํธ์ํฌ ๊ตฌ๋ถ, CI/CD ํ์ฉ ์๋ํ ๋ฐฐํฌ(Github Actions + Docker)
Events storming, Boris diagram, Snap-E
ํ ๋ฌ ์ ํธ๋ ์ค์ ์ถ์ฒ์ผ๋ก Pivotal - ์ด์ ์ธ ๋งค๋์ ๋์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์ ์ํ Domain Driven Design ์์์ ๊ฐ๋ช ๊น๊ฒ ๋ดค๋ค. MSA์ DDD๋ฅผ ํ๊ฒ ์ด! ๋ผ๊ธฐ ๋ณด๋จ ์์์ Events storming, Boris diagram, Snap-E ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ, ์! Domain, ์๊ตฌ์ฌํญ ๋ถ์์ ์ด๋ ๊ฒ๋ ํ ์ ์๊ตฌ๋? ๋ฅผ ๋ฐฐ์ ๋ค. ์ด๋ฒ๋ฒ ํ๋ก์ ํธ์ ์ ์ฉํ๊ณ ์ถ์๊ณ ๋คํํ ํ์(์ ๋ฆฌ)๋ ๋์ผํ ์๊ฐ์ ๊ฐ์ง๊ณ ์์ด ์ด๋ ค์ ์์ด ์ฒซ๋ ์ฐ์ตํด ๋ณผ ์ ์์๋ค. ์์์์ ์ค๋ ๊ธฐ๊ฐ ์ค๋ฌด์, ๊ฐ๋ฐ์ ๋ชจ๋ ๋ชจ์ฌ ํจ๊ป ์์ ํ๋ค๊ณ ํ๋ค. ์ด๋ณด์์ธ ์ฐ๋ฆฌ๋ ๋น์ฐํ ๋ฌธ์ ๊ฐ ๋ง์๋ค. ํ์ง๋ง ๊ธฐ์กด๊ณผ๋ ๋ค๋ฅด๊ฒ App์ ์ ์ฒด ํ๋ฆ์ ์ดํด๋ณผ ์ ์์๊ณ Aggregate์ ๊ด์ ์ ์กฐ๊ธ์ด๋๋ง ๋ฐ๋ผ๋ณผ ์ ์์๋ค.
๋๊ธ2