| 2023. 10
~ 2023.12
- ๋น์ฉ ๋ฌธ์ ๋ก
23. 12. 18
์ดํ๋ก ๋นํ์ฑํํฉ๋๋ค.
-
์ทจ์ ์ ์์ด ํ์ํ CS ์ง์์ ํ์ตํ ์ ์๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ํ๋ซํผ ์ ๋๋ค. ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋ฌธ์ ๋ฅผ ํตํด ํ์ํ ์ง์์ ๋น ๋ฅด๊ฒ ํ์ตํ ์ ์์ผ๋ฉฐ ํ๋ฆฐ ๋ฌธ์ ๋ฅผ ๋ชจ์์ ๋ถ์กฑํ ๋ถ๋ถ์ ๋น ๋ฅด๊ฒ ์ธ์งํ ์ ์์ต๋๋ค. ๋ํ ๊ฒฝ์์ ํตํ์ฌ ์ง๋ฃจํ CS ํ์ต์ ์ฌ๋ฏธ๋ฅผ ๋ถ์ฌํ๋ฉฐ ์ ์์ ๊ฒฝ์์ ํตํด ๋๋ฃ์ ํจ๊ป ์ฑ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ตญ๋น์ง์์์ ํ๋ก์ ํธ IPMS๋ฅผ ๋ง๋ค๊ณ ์์ฌ์์ ๊ฐ์ง๊ฒ ๋์์ต๋๋ค. ๋ชจ๋ ํ์์ด ํฌํธํด๋ฆฌ์ค๋ฅผ ์ํ์ฌ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ์ค์ ์๋น์ค๋ฅผ ํ๊ธฐ์ ์ ์ ํ ๋๋ฉ์ธ์ด ์๋๋ผ๊ณ ํ๋จํ์ฌ ์๋ก์ด ์๋น์ค๋ฅผ ๋ง๋ค๊ฒ ๋ค๊ณ ์๊ฐ์ ํ์ต๋๋ค.
- ์ทจ์ ์ ์ค๋นํ๋ฉด์ ํ๊ณผ์์ ๋ฐฐ์ด CS ๊ณต๋ถ๊ฐ ์ฌ๋ฏธ๋ ์์ง๋ง ๋จ์ํ Github์ ์ ๋ฆฌ, ๋์์, ์ฑ ์ ํตํด์ ํ์ตํ์ฌ ์ง๋ฃจํจ์ ๋๋ผ๊ฒ ๋์๊ณ , ์ด๋ฅผ ๊ฐ์ ํ๊ณ ์ ๋ฌธ์ ๋ฅผ ํ์ด ์ฌ๋ฏธ์๊ฒ ํ์ตํ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ ์๊ฐ์ ํ์ต๋๋ค.
[ ์ฒ์๋ง๋ ์ฌ๋๋ค์ ๋ฆฌ๋ฉํ์ฌ ์ฑ๊ณต์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์๋ ์ด์ ]
- ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์
ํ์
์ ๊ฐ์ฅ ์ค์ํ๊ฒ ์๊ฐ์ ํ์์ต๋๋ค.ํด๋ผ์ด์ธํธ
์์๋ฒ
์ ์ดํด๋, ์ธ์ง์ ์ฐจ์ด๊ฐ ์๋ค๊ณ ์๊ฐํ์ฌ ์ต๋ํ ๊ฐ๋จํ๊ฒ ์ค๋ช ( ๊ธ, ๊ทธ๋ฆผ์ ํตํ์ฌ )ํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธ์ ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ ์ ํ๊ธฐ ์ํ์ฌ ๋ ธ๋ ฅํ์์ต๋๋ค.
[ ํ์ฌ ์๋น์ค ์ด์ ๋ฌธ์ ์ ]
- ์๋ฒ๋ฅผ ์ด์ํ๋ฉด์ CPU 100%๊ฐ ๋์ด์ ์์คํ ์ ์ค๋ฅ๊ฐ ๋ฐ์.
- ์๋ฒ ๋น์ฉ์ ๋ฌธ์ ๋ก ์ธํ์ฌ ํ์ฅ์ฑ์ด ๋ถ์กฑํ EC2์ DB ์ค์นํ์ฌ ์ด์.
- DB ์๋ฒ๊ฐ CPU 100%๊ฐ ๋๋ฉด ์๋น์ค ์ค๋ฅ, ์๋ฒฝ 2์์ Redis Backup์ ์ํํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ฐ์
[ ํ์ฌ ๋ฌธ์ ๊ฐ์ ]
- ํ์ฌ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ Swap, EC2 ๋ฒ์คํธ ํ์์ Credit ๋ถ์กฑ์ ๋ง๊ธฐ ์ํ์ฌ ์ธ์คํด์ค ์ ํ ๋ณ๊ฒฝ, Stop & Start ๋ฐฉ์์ผ๋ก ๋ฌธ์ ํด๊ฒฐ
- Stop & Start ๋ฐฉ์์ ์ํํ๋ฉด์ ๋ชจ๋ํฐ๋ง์ ์ค์์ฑ์ด ์ฆ๊ฐํ์ฌ ์ด๋ฅผ ์๋ํ ํ๊ธฐ ์ํ์ฌ
CloudWatch
,Lambda
,Slack
์ ์ด์ฉํ์ฌ ์๋ํ ๋ณ๊ฒฝ
[ ๊ฐ์ ํด์ผ ๋๋ ๋ถ๋ถ ]
- ์๋ฆผ์ ํตํ์ฌ ์๋ํ๋ฅผ ํ์ฌ๋ ํ์ฌ Stop & Start ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์์์ ํด์ผ๋๋ ๋ฌธ์
- ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ์ฌ Lambda Trigger๋ฅผ ํตํ์ฌ Stop & Start ๋ฐฉ์์ ๋ฌธ์ ์ ์ ๊ฐ์ ํ์
- Lambda๋ฅผ ํตํ์ฌ Stop & Start์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ๋ ์ฌ์์ํ๋ ๋์ ์๋น์ค๊ฐ ์ ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ๋ถ์ฐ ํ๊ฒฝ์ผ๋ก ๋ณ๊ฒฝ์ ํด์ผ๋๋ค.
- ํ ์คํธ ์ฝ๋๋ ๋จ์ํ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๊ฒ์ฆํ๋ ๋ก์ง์ด ์๋๋ผ ๋ด ์ฝ๋๋ฅผ ์ฝ๋ ์๋๋ฐฉ์๊ฒ ์ค๋ช ํ๋ ์ฝ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Controller
์ ํ ์คํธ๋ Mock์ ํตํ์ฌ HTTP ์์ฒญ, ๊ฒ์ฆ์์ ์ฑ ์, ์ฃผ์ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ์์ฒญ,๊ฒ์ฆ
์ ๋ถ๋ฆฌ๋ฅผ ํ์์ต๋๋ค.
Service Layer Test
์ ๊ฒฝ์ฐ์ Test Double(Mocking)์ ํตํ์ฌ ํ
์คํธ๋ฅผ ์งํ์ ํ์์ ๋ Repository์ ์ธํฐํ์ด์ค๊ฐ ๋ณํ๋ฅผ ํ๋ฉด ์คํจ๋ฅผ ํ๋ค.
- ๋จ์ ํ
์คํธ์์ Mocking์ ํ๋ฉด ์ฐ๊ด ๊ด๊ณ์
์ธํฐํ์ด์ค์ ๊ฐํ๊ฒ ์์กด
ํ์ฌ ๋ฆฌํํ ๋ง์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ Classic ๋ฐฉ์์ ํตํ์ฌ ํ ์คํธ๋ฅผ ์งํ์ ํ์์ต๋๋ค. - ์ ์ดํ ์ ์๋ ์ฝ๋์ธ ๊ฒฝ์ฐ์๋ง Test Double์ ์ฌ์ฉ์ ํ์์ต๋๋ค.
LocalDateTime.now()
์ ํ ์คํธ ์ฝ๋๋ ํญ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ํ๋ค์ด Service์ ๋ณ์๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ
๐ API ๋ฌธ์ - ๋ฌธ์ ๋ณด๊ธฐ
๋ธ๋ก๊ทธ : Jenkins Pipeline์ ์ด์ฉํ CI/CD + SSHAgent
- ์ฒ์ ๋ฐฐํฌ๋ฅผ ์ ํํ
ํ์ดํ๋ผ์ธ
์ ๋๋ค. ์ด๋ Jenkins๋ฅผ ์ ํํ ์ด์ ๋ ์คํฐ๋๋ฅผ ํตํ์ฌ Jenkins๋ฅผ ํ์ตํ ๊ฒฝํ์ด ์์ด ๋ค๋ฅธ 2๊ฐ์ ๊ธฐ์ ๋ณด๋ค ๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ๋ค๊ณ ์๊ฐํ์ฌ ์ ์ฉ์ ํ์์ต๋๋ค. - Jenkins๋ฅผ ํตํ์ฌ ๋ฐฐํฌ์ ๋ฌธ์ ์ ์ ํธ๋ํฝ์ด ์ฆ๊ฐ๋ฅผ ํ์์ ๋ Auto Scailing์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ์ฌ ์คํ๋ง ๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค์ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ก ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝ์ ํ์ต๋๋ค.
๋ธ๋ก๊ทธ : Github Actions CI + CodeDeploy๋ก CI/CD ๊ตฌํํ๊ธฐ
[ ํ์ฌ ๋ฌธ์ ]
- SSE๋ฅผ ์ถ๊ฐํ๋ฉด์ ๋ถ์ฐ ํ๊ฒฝ์ ๋ํ ์ ์ฝ์ฌํญ์ด ๋ฐ์์ ํ์์ต๋๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ก WAS๋ฅผ 1๊ฐ๋ง ์ฌ์ฉํ๊ฒ ๋ณ๊ฒฝ
[ ํ์ฌ ์ ์ฉ ]
- Git๊ณผ ์ฐ๋์ฑ์ด ์ข์ Github Action์ ํตํ ๋ฐฐํฌ ์๋ํ๋ก ๋ณ๊ฒฝ์ ํ์ต๋๋ค.
- ๋ณ๊ฒฝํ ์ด์ ๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ๋ฐฐํฌ ์๋ํ๋ฅผ ๊ตฌ์ฑํ ์ ์์๊ณ , ์ ํ๋ Resource๋ฅผ ํตํ์ฌ ์ต๋์ ํจ์จ๋ก ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ( Action๋ง ์ฌ์ฉํ์ฌ ํ์ดํ๋ผ์ธ ํจ์จ์ ๊ด๋ฆฌ, ๋ฐฐํฌ ์ฑ๊ณต์ ์๋์ด ๋์ค๋ ChatOps๋ฅผ ํตํด ์๋น์ค ์ค๋ฅ์ ๋น ๋ฅด๊ฒ ๋์์ด ๊ฐ๋ฅํ๋ค. )
[ ๋ณ๊ฒฝ์ ์๊ฐํ๋ ๋ถ๋ถ ]
- ํ์ฌ SSE์ ํ์ฅ์ฑ์ ์๊ฐํ์ฌ ๋ฉ์ธ์ง(Kafka)๋ฅผ ์ ์ฉํ์ฌ AWS ๊ณ ๊ฐ์ฉ์ฑ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค.