๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ํšŒ๊ณ /โœ… 22๋…„ ํšŒ๊ณ 

[์ผ์ผ ํšŒ๊ณ ] 22.05.23 - "AWS VPC, ์ˆ™๋ฐ•์•ฑ ํ”„๋กœ์ ํŠธ์™€ Events storming, Boris diagram, Snap-E"

by kukim 2022. 5. 23.

๐Ÿ“š ๋ฐฐ์šด ๊ฒƒ

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์˜ ๊ด€์ ์„ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

Events storming : User
Events storming : ์ˆ™์†Œ
Snap-E : User

'๐Ÿ“ ํšŒ๊ณ  > โœ… 22๋…„ ํšŒ๊ณ ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ผ์ผํšŒ๊ณ ] 22.06.02 - "๊ฒ€์ฆ๋ฌธ ์‹คํŒจํ•ด๋„ ๊ณ„์†ํ•˜๊ธฐ, ํ†ตํ•ฉํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋”๋ฏธ๋ฐ์ดํ„ฐ ์„ธํŒ…, ์ฝ”๋“œ์Šค์ฟผ๋“œ ์„ ๋ฐฐ ๊ธฐ์ˆ˜์™€ ์˜จ๋ผ์ธ ๋งŒ๋‚จ"  (2) 2022.06.02
[์ผ์ผํšŒ๊ณ ] 22.05.31 - "Github Actions์„ ํ™œ์šฉํ•œ ๋ฐฐํฌ ์ž๋™ํ™”, ๋นŒ๋“œ(ํ…Œ์ŠคํŠธ ํ†ต๊ณผ)์— ๋ฌธ์ œ ์—†์—ˆ์ง€๋งŒ ๋Ÿฐํƒ€์ž„์—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ"  (0) 2022.06.01
[์ผ์ผ ํšŒ๊ณ ] 22.05.18 - "DB ํŠธ๋žœ์žญ์…˜, JPA๋ฅผ ๋ฐฐ์šฐ๊ธฐ๊นŒ์ง€"  (2) 2022.05.19
[์ผ์ผ ํšŒ๊ณ ] 22.04.19~20 - "Mockup API ์„œ๋ฒ„, ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„๊ณผ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๊ฒฐ์ •, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ „๋„(?)"  (5) 2022.04.20
[์ผ์ผ ํšŒ๊ณ ] 22.04.18 - "ํ˜‘์—…ํ•˜๊ธฐ, ์ƒํ™ฉ์— ๋งž๋Š” ์•„ํ‚คํ…์ฒ˜์™€ FE/BE ๋ฐฐํฌ, DB ๋ชจ๋ธ๋ง"  (0) 2022.04.18

๋Œ“๊ธ€2