diff --git a/README.md b/README.md index 96ca78a..c1a8517 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,352 @@ -## How to run ๐Ÿณ -### MacOS -``` -cd scripts -sh build.sh -``` -### WindowsOS -``` -cd scripts -sh .build.sh -``` \ No newline at end of file +## ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ + +์ˆ˜๊ฐ• ์‹ ์ฒญ์„ ์ง„ํ–‰ํ•˜๋Š” ๋ชจ์˜ ํ”„๋กœ์ ํŠธ + +https://github.com/ddwu-aws-cloud-club/team-b + +> ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ์ •์˜ +> +- ์ˆ˜๊ฐ•์‹ ์ฒญ ์„œ๋น„์Šค๋Š” ์ƒˆํ•™๊ธฐ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ฆด ๊ฒƒ์ด๋‹ค. + - ํŠน์ • ๊ธฐ๊ฐ„์— ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์ด ๊ณผ์ค‘๋œ๋‹ค. + - ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ์ด ํ•„์š”ํ•˜๋‹ค. +- ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ์™€ ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์ด์ค‘ํ™” ๊ตฌ์„ฑ(Multi - AZ)์ด ํ•„์š”ํ•˜๋‹ค. + - ์‚ฌ์šฉ์ž 1 ~ n ๋ช…์˜ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค ๊ฒฝ๋Ÿ‰ํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค. + - ์‚ฌ์šฉ์ž๊ฐ€ 100๋ช…์ด ๋  ๊ฒฝ์šฐ, ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ด๋‹ค. + - ์‚ฌ์šฉ์ž๊ฐ€ 1000๋ช…์ด์ƒ์ด ๋  ๊ฒฝ์šฐ, ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค. โ† ์ด ๋ถ€๋ถ„์— ์ง‘์ค‘ + +# ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ + +- ์ ์€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ณ ๋ ค + + ## ์‚ฌ์šฉ์ž๊ฐ€ 100๋ช… ์ดํ•˜์ธ ๊ฒฝ์šฐ + + ### [ ๊ณ ๋ ค ์‚ฌํ•ญ ] + + - ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜ + - ์ ์ ˆํ•œ ์ธ์Šคํ„ด์Šค ์„ ํƒ + - ์ธ์Šคํ„ด์Šค ๊ฒฝ๋Ÿ‰ํ™” - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„๋ฆฌ, web/was ๋ถ„๋ฆฌ โ†’ 3 Tier ๊ตฌ์ถ• + - ๊ธฐ๋ณธ ๋ณด์•ˆ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง + - ๋น„์šฉ ํšจ์œจ์ ์ธ ๊ตฌ์„ฑ + + ### **[์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ]** + + - ๋‹จ์ผ ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท โ†’ Public๊ณผ Private์œผ๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๋„คํŠธ์›Œํฌ์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ๋‚˜๋ˆˆ๋‹ค. + - ์ธ์Šคํ„ด์Šค ๊ฒฝ๋Ÿ‰ํ™”๋ฅผ ์œ„ํ•ด WEB/WAS ์—ญํ• ์„ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค์™€ DB ์—ญํ• ์„ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. + - ์‚ฌ์šฉ์ž๋Š” Route53์ด๋ผ๊ณ  ํ•˜๋Š” DNS์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด Public IP๋ฅผ ์ฐพ์•„์„œ AWS VPC ์•ˆ์— ๊ตฌ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•œ๋‹ค. + - ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์— ์žˆ๋Š” ํƒ„๋ ฅ์  ip ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” Instance๋Š” Web๊ณผ WAS ์—ญํ• ์„ ํ•˜๊ณ  ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญํ• ์„ ํ•œ๋‹ค. + - ๊ธฐ๋ณธ ๋ชจ๋‹ˆํ„ฐ๋ง + - CloudWatch๋ฅผ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ๋ฉ”ํŠธ๋ฆญ ๋ฐ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง + - ์ž๋™ ๋Œ€์‹œ๋ณด๋“œ ์ƒ์„ฑ, ์ž„๊ณ„์น˜ ์ดˆ๊ณผ ์•Œ๋žŒ(Slack ์—ฐ๊ฒฐ) + - 2๊ณ„์ธต ๊ตฌ์„ฑ + + - ์ธ์Šคํ„ด์Šค ๊ฒฝ๋Ÿ‰ํ™” - 3tier ๋ถ„๋ฆฌ ๊ตฌ์ถ• + - public subnet + - web server + - private subnet + - was + - db + + ![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/7ebcda5f-d375-41ff-845c-0587c06c6079) + + + + ## ์‚ฌ์šฉ์ž๊ฐ€ 1000๋ช…์ธ ๊ฒฝ์šฐ + + ์—ฌ์ „ํžˆ ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์™€ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์— ๋Œ€ํ•œ ๋Œ€๋น„๋ฅผ ๋ฏธ๋ฆฌ ํ•ด๋ณด์ž! + + โ†’ ๊ณ  ๊ฐ€์šฉ์„ฑ์— ์ง‘์ค‘์„ ํ•˜์ž + + +### [ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ] + +1. HA(๊ณ ๊ฐ€์šฉ์„ฑ)์„ ์œ„ํ•œ ๋ฐฉ์•ˆ +- ์ด์ค‘ํ™” +- ๋‹ค์ค‘ ๊ฐ€์šฉ์˜์—ญ (Multi -AZ) + + ์„œ๋น„์Šค๋ฅผ ๋ณด๋‹ค ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด 1๊ฐœ ์ด์ƒ์˜ ๊ฐ€์šฉ ์˜์—ญ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. + + ๋‹จ์ผ ์ธ์Šคํ„ด์Šค, ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” Scale Out + + - ELB๋ฅผ ์ด์šฉํ•œ ์ˆ˜ํ‰์  ํ™•์žฅ + - ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ํŠธ๋ž˜ํ”ฝ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ? โ†’ ์ธ์Šคํ„ด์Šค ์•ž ๋‹จ์—์„œ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์•„์„œ ๊ฐ ์ธ์Šคํ„ด์Šค์—๊ฒŒ ๋ถ„๋ฐฐํ•ด์ค˜์•ผ ํ•œ๋‹ค. + - ELB๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์•„ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๊ณ  ๊ฐ€์šฉ์„ฑ์„ ๋†’์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. +1. ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ +- ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ๋Œ€์ƒ + 1. EC2 ์ธ์Šคํ„ด์Šค + 2. ์ปจํ…Œ์ด๋„ˆ + 3. IP ์ฃผ์†Œ +- ๋‹ค์ค‘ ๊ฐ€์šฉ ์˜์—ญ ์ง€์› +- ์ž๋™์œผ๋กœ ์šฉ๋Ÿ‰ ํ™•์žฅ +- ์˜คํ†  ์Šค์ผ€์ผ ๊ทธ๋ฃน ์ง€์›(์ž๋™์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ELB์— ๋“ฑ๋กํ•˜๊ณ  ์ œ์™ธ) +- ELB Service + - ALB(Application Load Balancer) + - ๊ณ ๊ฐ€์šฉ์„ฑ, ์ž๋™ํ™•์žฅ + - L7๊ธฐ๋ฐ˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ + - ์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… + - HTTP, HTTPS, HTTP/2 ์ง€์› + - ํ—ฌ์Šค ์ฒดํฌ + - ์„ธ์…˜ ์œ ์ง€ + - ๋ชจ๋‹ˆํ„ฐ๋ง/๋กœ๊น… + +## Infra + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/9913c160-f44a-49f1-a7c8-c68e259acf10) + + +์ตœ์ข… ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ + +### CICD + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/868542d9-3095-4209-a48f-2dc6d611e3cc) + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/1125e815-49ca-4826-8461-53cf3b970cc3) + + +### ์‚ฌ์šฉ ๊ธฐ์ˆ  + +**WAF (**Web Application Firewall) + +Application Load Balancer ์•ž์— WAF๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„ ์ž์›์— ๋Œ€ํ•ด ์œ ์ž…๋˜๋Š” HTTP(S) ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•˜๊ณ  ์ฐจ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค. + +WAF๋Š” Access Control list๋ฅผ ์ •์˜ํ•˜๊ณ , ํƒ์ง€ Rule์„ ์„ค์ •ํ•จ์œผ๋กœ์จ ๋‚ด๋ถ€ ์ž์›์„ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. + +**์ด์ค‘ํ™” ๊ตฌ์„ฑ์„ ํ†ตํ•œ ์•ˆ์ •์„ฑ ๊ฐœ์„ ** + +- ๋‹ค์ค‘ ๊ฐ€์šฉ์˜์—ญ ํ™œ์šฉ +- ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ†ตํ•œ ์„œ๋ฒ„ ์ด์ค‘ํ™” + - ALB๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ์ ์ ˆํžˆ ๋ฐฐ๋ถ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. +- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์ค‘ํ™” + - Master-Slave ๊ตฌ์กฐ ์„ ํƒ(=Primary-Secondary ๊ตฌ์กฐ) + + **ํŠธ๋ž˜ํ”ฝ์ด ๋Š˜์–ด๋‚จ**์— ๋”ฐ๋ผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒย **๋ณ‘๋ชฉํ˜„์ƒ**์ด ์ƒ๊ธธ ์ˆ˜ ๋ฐ–์— ์—†์œผ๋ฉฐ, **์“ฐ๊ธฐ**๋Š”ย **์›๋ณธ ์„œ๋ฒ„์—์„œ๋งŒ ์ˆ˜ํ–‰**ํ•˜๊ฒŒ ํ•˜๊ณ ย **์ฝ๊ธฐ**๋Š”ย **์›๋ณธ์˜ ๋ณต์ œ ์„œ๋ฒ„**์—์„œ ์ฝ์–ด์˜ค๊ฒŒ ํ•œ๋‹ค๋ฉด ์“ฐ๊ธฐ์˜ ๊ธฐ๋Šฅ๊ณผ ์ฝ๊ธฐ์˜ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. + + +## Monitoring + +### **์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ** + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/76399227-0168-4763-8f06-455b82a9261c) + + +> prometheus (:9090) +> + +[](http://ec2-3-35-100-16.ap-northeast-2.compute.amazonaws.com:9090/) + +> alertmanager (:9093) +> + +[](http://ec2-3-35-100-16.ap-northeast-2.compute.amazonaws.com:9093/) + +- ์ด๋ฒคํŠธ ๋ธŒ๋ฆฟ์ง€๋Š” ๋น„์šฉ๋ฌธ์ œ๋„ ๊ทธ๋ ‡๊ณ  ๊ตณ์ด ํ•œ ๋‹ค๋ฆฌ๋ฅผ ๊ฑฐ์ณ์„œ ์ง„ํ–‰ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋ผ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. +- node exporter ๋ชจ๋‹ˆํ„ฐ๋ง ์ค‘ ์กฐ๊ฑด(์œ„ํ—˜ ๊ฐ์ง€)์ด ๋งŒ์กฑ๋˜๋ฉด ์•Œ๋ฆผ์„ ๋„์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +- ๋‹ค์Œ ๊ธฐ๋ณธ์ ์ธ ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ทœ์น™์— ์—‡๋‚˜๊ฐ€๋ฉด slack ์ฑ„๋„์— ์ž๋™์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.(ํ˜„์žฌ ๊ฐœ์ธ ์ฑ„๋„์—์„œ ํ™•์ธ) + + + + ![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/1e69e52e-55f3-4415-8583-c08eda609c88) + + **HostOutOfMemory -** ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ€๋Š”์ง€ ํ™•์ธ์„ ์œ„ํ•ด ์šฐ์„  100% ๋ฏธ๋งŒ์œผ๋กœ ์„ค์ •ํ•จ + + +> grafana (:3000) +> + +- cpu, memory, network, Disk, File System ์ƒํƒœ๋ฅผ ๋Œ€์‰ฌ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Œ +- ํ˜„์žฌ Node Exporter๋กœ was์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉฐ ์ด๋ฅผ ์œ„ํ•ด Node Exporter Full ๋Œ€์‰ฌ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Œ. + + ![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/dbd73351-888d-4be1-a286-1d438a5bcb89) + + + +### **์—”๋“œ ํฌ์ธํŠธ** + +> nodeExporter (:9100) from WAS +> +- WAS ์„œ๋ฒ„์˜ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•ด์„œ ์—”๋“œํฌ์ธํŠธ์— ๋…ธ์ถœ + +### ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ + +> Apache Bench +> + + + +- 15000๋ช…์ด 15000๋ฒˆ ์š”์ฒญํ•œ๋‹ค. + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/2780d438-ab5e-4b9c-a28e-ba8ccf304819) + + +request ๋ณ„ ๋ฐ˜์‘ ์‹œ๊ฐ„ + +## Back-End + +### Redis ๋Œ€๊ธฐ์—ด + +**๐Ÿ’กย ๋ ˆ๋””์Šค ์‚ฌ์šฉ ์ด์œ ** + +- ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„ , ๋ ˆ๋””์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ธย **Sorted Set**์„ ํ™œ์šฉํ•˜์—ฌย `๋ชจ๋“  ์š”์ฒญ์ด DB์— ๋ฐ”๋กœ ๋ถ€ํ•˜๊ฐ€ ๊ฐ€์ง€ ์•Š๊ณ  ์ฐจ๋ก€๋Œ€๋กœ ์ผ์ • ๋ฒ”์œ„๋งŒํผ์”ฉ ์ฒ˜๋ฆฌ`ํ•˜๋Š” ๊ตฌ์„ฑ +- ์„ ์ฐฉ์ˆœ ์ด๋ฒคํŠธ ์‹œ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์›์— ๋Œ€ํ•ด ๋Œ€๊ธฐ์—ด ์ˆœ๋ฒˆ์„ ํ‘œ์ถœํ•˜๊ธฐ ์šฉ์ด + +- **โ“ย Sorted Set์ด๋ž€?** + + ![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/6b1c08dc-cdc5-4a4b-8bcb-6bf474d5f0d4) + + + - Sorted Sets์€ย **key ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ๊ฐœ์˜ score์™€ value**๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. + - Value๋Š” score๋กœ sort๋˜๋ฉฐ ์ค‘๋ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + - Score๊ฐ€ ๊ฐ™์œผ๋ฉด value๋กœ sort๋ฉ๋‹ˆ๋‹ค. + - Sorted Sets์—์„œ๋Š” ์ง‘ํ•ฉ์ด๋ผ๋Š” ์˜๋ฏธ์—์„œ value๋ฅผ member๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. + - Sorted Sets์€ ์ฃผ๋กœ sort๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + + > ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜์ž๋ฉด, ํ•œ Key์— ์—ฌ๋Ÿฌ value์™€ score๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐย ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” value๋กœ score์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค + > + +**๊ธฐํ”„ํ‹ฐ์ฝ˜ ์„ ์ฐฉ ์ด๋ฒคํŠธ ๊ตฌ์กฐ - Sorted Set ์„ ํ†ตํ•œ ์ด๋ฒคํŠธ ๊ตฌํ˜„** + +- Sorted Set Key์—๋Š” **EVENT**ย ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. +- Value์—๋Š”ย **์‚ฌ์šฉ์ž๋ช…(Pir, David, Foo, John)**์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜ˆ์ œ๋Š” ์‚ฌ์šฉ์ž๋ช…์œผ๋กœ ํ–ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๋ช…์ด ์ค‘๋ณต์ผ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œย `๊ณ ์œ ํ•œ ๊ฐ’`์œผ๋กœ ์„ธํŒ…ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. +- Score์—๋Š”ย `์ฐธ์—ฌํ•œ ์‚ฌ๋žŒ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ`ํ•˜๊ธฐ ์œ„ํ•ด, ์ด๋ฒคํŠธ๋ฅผ ์ฐธ์—ฌํ•œ ์‹œ๊ฐ„์„ย **์œ ๋‹‰์Šคํƒ€์ž„(m/s)**ย ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. + +### ๐Ÿ“Œย **์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ -** 30๊ฐœ ์„ ์ฐฉ์ˆœ ์ด๋ฒคํŠธ(์ž๋ฆฌ๊ฐ€ 30๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ)์‹œ 100๋ช…์ด ์š”์ฒญํ–ˆ์„ ๊ฒฝ์šฐ + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/a4552989-605c-4db4-9b35-3dfb5e00379d) + + +**(1)**ย 100๋ช…์˜ ์œ ์ €๊ฐ€ ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. + +**(2)**ย 100๋ช…์˜ ์œ ์ €๋Š” ๋Œ€๊ธฐ์—ด์— ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. + +**(3)**ย 1์ดˆ๋งˆ๋‹ค ๋™๊ธฐํ™” ๋ผ์–ด ๊ณผ๋ชฉ ๋งˆ๊ฐ(์„ฑ๊ณต), ์‹คํŒจ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. + +**(4)**ย ์„ฑ๊ณต์‹œ, ์ด๋ฒคํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜์œผ๋ฉดย **100๋ช…์˜ ์œ ์ €์ค‘ ๋จผ์ € ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœย `10๋ช…์”ฉ` ์ˆ˜๊ฐ• ์‹ ์ฒญ์„ ์„ฑ๊ณต**ํ•ฉ๋‹ˆ๋‹ค. + +**(5)**ย ์‹คํŒจ์‹œ, ๋‹ค์Œ ๋Œ€๊ธฐ์—ด๋กœ ๋Œ์•„๊ฐ€๋ฉด์„œย **`๋‚จ์€ ๋Œ€๊ธฐ์—ด ์ˆœ๋ฒˆ์„ ํ‘œ์ถœ`**ํ•ฉ๋‹ˆ๋‹ค. + +**(6)**ย ํ•ด๋‹น ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ด๋ฒคํŠธ๋Š” ์ข…๋ฃŒ(30๊ฐœ ๋ฐœ๊ธ‰์™„๋ฃŒ)ํ•ฉ๋‹ˆ๋‹ค + + + +๋‹ค์ค‘์Šค๋ ˆ๋“œ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ(50๊ฐœ) ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ + +### Lock (Application) + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/14aab76e-f1cf-4d68-9d8d-61efca2326fe) + +avilableSeets์ด 40์ผ ๋•Œ + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/3c986d50-82b2-4a82-9f31-ab90ae637c12) + + +### ์ˆ˜๊ฐ• ์ทจ์†Œ ๋ถ€๋ถ„ ๋™์‹œ์„ฑ ์ œ์–ด (by named Lock) + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/e0431964-b253-43cc-b432-3bc10e4742fa) + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/0daeb32a-a790-480b-be8e-a64eb8cf83c0) + + +### ๋‹ค์ค‘ ์„œ๋ฒ„ ์„ธ์…˜ ๊ด€๋ฆฌ + +## Lambda + SES + +### ํ๋ฆ„ + +- Lambda๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RDS์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. +- Enroll ํ…Œ์ด๋ธ”๊ณผ(์ˆ˜๊ฐ•์‹ ์ฒญ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋Š” ํ…Œ์ด๋ธ”) Student ํ…Œ์ด๋ธ”์„ Joinํ•˜์—ฌ ์ด๋ฉ”์ผ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. +- SES์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ด๋ฉ”์ผ๋กœ ์ˆ˜๊ฐ•์‹ ์ฒญ ์™„๋ฃŒ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. + +### SNS์—์„œ SES๋กœ ๋ณ€๊ฒฝํ•œ ์ด์œ  + +- **SNS** : SNS๋ฅผ ํ†ตํ•ด ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ SNS ์ฃผ์ œ(Topic)์— ๊ตฌ๋…๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ด ๊ตฌ๋… ํ”„๋กœ์„ธ์Šค๋Š” ์ˆ˜๋™์œผ๋กœ ํ™•์ธ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์•ผ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ์ด๋ฉ”์ผ ์ฃผ์†Œ์— ๋Œ€ํ•ด ์ž๋™ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ๋ฐ๋Š” ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. +- **SES** : ์ด๋ฉ”์ผ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ณด๋‚ด๋Š” ์„œ๋น„์Šค๋กœ, ์ˆ˜์‹ ์ž ๋ชฉ๋ก์ด ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋ณ€ํ™”๋˜๋Š” ์„œ๋น„์Šค์— SNS๋ณด๋‹ค ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. + +### Lambda ํ•จ์ˆ˜ ์ฝ”๋“œ + +*(์ด ์ฝ”๋“œ๋Š” SNS ์‚ฌ์šฉ์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•ด๋‘” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค)* + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/7e2aa7f2-8163-454d-8f9b-d63b21d0e2e5) + +**RDS ์ ‘์† ์„ฑ๊ณต** + +![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/04a64597-674c-47b3-bb4c-a5c824fba2c8) + + +### SES ์ƒ์„ฑ + +- **๊ณ„์ • ์ƒŒ๋“œ๋ฐ•์Šค ํ•ด์ œ ํ•„์š”** - ํ”„๋กœ๋•์…˜ ์•ก์„ธ์Šค ์š”์ฒญํ•˜๊ธฐ + + ![image](https://github.com/ddwu-aws-cloud-club/team-b/assets/96467030/5f687f63-ba2b-4e65-bd31-5ef133f69305) + + + ์ƒŒ๋“œ๋ฐ•์Šค ์ƒํƒœ์—์„œ๋Š” **๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž**์— ํ•œ์—์„œ๋งŒ ์ด๋ฉ”์ผ์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณ„์ •์„ ํ”„๋กœ๋•์…˜ ์•ก์„ธ์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก AWS์ธก์— ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +- **AWS์— ํ”„๋กœ๋•์…˜ ์•ก์„ธ์Šค ์š”์ฒญ** + + 1์ฐจ์ ์œผ๋กœ ์š”์ฒญ์„ ํ•˜์˜€์œผ๋‚˜ ๋” ์„ธ๋ถ€์ ์ธ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹ต๋ณ€์ด ์™”๊ณ , ์ข€ ๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ 2์ฐจ์ ์œผ๋กœ ์š”์ฒญ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์Šน์ธ ๋Œ€๊ธฐ ์ค‘์ž…๋‹ˆ๋‹คโ€ฆ๐Ÿฅบ + + +# As Is โ†’ To Be + +## ๊ธฐ์ˆ ์  ๊ด€์  + +### ์บ์‹œ ์„œ๋ฒ„: ElastiCache for Redis๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ + +ํ˜„์žฌ๋Š” WAS ์ธ์Šคํ„ด์Šค ๋‚ด๋ถ€์—์„œ Redis๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์œผ๋‚˜, ์ถ”ํ›„ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ElastiCache๋ฅผ ๋”ฐ๋กœ ๋‘์–ด ๊ฐœ์„ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. + +### 3Tier CICD ๊ฐœ์„  + +ํ˜„์žฌ๋Š” Docker+GithubAction์„ ํ†ตํ•ด CICD ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +**ํ•ด๋‹น ๋ฐฉ์‹์˜ ๋ฌธ์ œ** + +ํ˜„์žฌ ์•ก์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ Docker Hub ์˜ public Repository์— ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, public์—์„œ์˜ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— Terraform ์„ ํ†ตํ•œ CICD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐœ์„ ํ•œ๋‹ค๋ฉด ๋ณด๋‹ค 3Tier์— ์ ํ•ฉํ•˜๋„๋ก ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. + +[[CICD] Terraform์„ ํ†ตํ•œ AWS 3 Tier ๊ตฌ์„ฑ ๋ฐ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋ฐฐํฌ #1 - ์•„ํ‚คํ…์ฒ˜ ๋ฐ CICD ํ๋ฆ„ ์†Œ๊ฐœ](https://nyyang.tistory.com/86) + +### **Bastion Host ์‚ฌ์šฉ ์‹œ ์ด์Šˆ (pain point)** + +ํ˜„์žฌ ์ €ํฌ ์•„ํ‚คํ…์ฒ˜์—์„ ๋Š Bastion host๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€ ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +**EC2 ์ ‘๊ทผ ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ** + +์ด์— ๋Œ€ํ•ด, Bastion host ๋Œ€์‹  AWS System Manager Session Manager๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ณด๋‹ค ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ, ์ถ”ํ›„ ๋„์ž…ํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. + +[Amazon EC2 Instance Connect Endpoint ๋ฅผ ํ™œ์šฉํ•œ ํ์‡„๋œ VPC ํ™˜๊ฒฝ์˜ AWS EC2 ์ ‘๊ทผ - LG CNS](https://www.lgcns.com/blog/cns-tech/aws-ambassador/45743/) + +**bastion host ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ** + +- Bastion Host๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Private Subnet์˜ EC2์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด keypair ๊ธฐ๋ฐ˜์˜ ์ ‘์†์„ ๋™๋ฐ˜ +- Pain point + - ์ง€์†์ ์ธ keypair ๊ด€๋ฆฌ ์ด์Šˆ + - 1์ธ 1๊ณ„์ • ์‚ฌ์šฉ ์‹œ ๋งŽ์€ ๊ธฐํšŒ๋น„์šฉ ๋ฐœ์ƒ + - ํ์‡„๋ง์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ + - VPN ๋“ฑ ๋‹ค๋ฅธ Workaround ๋ฐฉ์‹ ํ•„์š” +- ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์ž์› ๋น„์šฉ ๋ฐ ๊ด€๋ฆฌ ์—ํฌํŠธ ์ถ”๊ฐ€ ๋ฐœ์ƒ +- ์ผ์›ํ™” ๋œ ์ ‘๊ทผ ์ œ์–ด, ๋ชจ๋‹ˆํ„ฐ๋ง ๋ถˆ๊ฐ€ + - ์ถ”๊ฐ€์ ์ธ ์ž‘์—… ํ˜น์€ ์†”๋ฃจ์…˜์ด ํ•„์š” + +**Session Manager ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ** + +- Bastion Host ๋Œ€๋น„ ์žฅ์  + - key pair ์—†์ด IAM์„ ํ†ตํ•œ ์ผ์›ํ™”๋œ EC2 ์ž์› ์ ‘๊ทผ ํ†ต์ œ + - Cloud Trails, SSM Session Logging ์„ ํ†ตํ•œ ์ ‘๊ทผ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ฐ์‚ฌ ๊ฐ€๋Šฅ +- Pain point + - ํ์‡„๋ง์ผ ๊ฒฝ์šฐ Endpoint๋ฅผ ์ถ”๊ฐ€ ๊ตฌ์„ฑํ•˜์—ฌ์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์กด์žฌ