[Terraform] Websocket Gateway ๊ตฌ์ฑ
๊ด๋ จ ํฌ์คํธ
https://blog.naver.com/sssang97/222923857318
๊ตฌ์ฑ ์ฝ๋
https://github.com/myyrakle/terraform/tree/master/aws/lambder-server/websocket
API Gateway์ Lambda๋ฅผ ํ์ฉํ ์๋ฒ๋ฆฌ์ค Websocket ์๋ฒ ๊ตฌ์ฑ์ ๋ง์๋ณด์๋ค.
websocket ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋๊ฑด ์๊ฐ๋ณด๋ค ๋ฒ๊ฑฐ๋กญ๊ณ ์ด์์์์ ์ ๊ฒฝ์ฐ์ด๋ ๋ถ๋ถ์ด ๋ง์๋ฐ, AWS์์ ์ ๊ณตํด์ฃผ๋ Websocket Gateway๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ๋ฆฌ์คํ๊ฒ ์ด์์ด ๊ฐ๋ฅํ๋ค.
๋ณดํต์ Redis ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ๋ก ๊ด๋ฆฌํ๋ ์ปค๋ฅ์
์ ๋ํ ๋ถ๋ถ์ Websocket Gateway๊ฐ ์์์ ์ฒ๋ฆฌํด์ค๋ค.
๊ธฐ๋ณธ๊ตฌ์ฑ
๋จผ์ git ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ค๋นํ๋ค.
๋ค์ ํ
ํ๋ฆฟ์ ๋ณต์ฌํด์ ์ฐ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
https://github.com/myyrakle/websocket-server-node
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด terraform ๋ณ์๋ฅผ ์ ์ํ๋ค.
region = "ap-northeast-2"
server_name = "foobar"
environment = "prod"
codestar_arn = "arn:aws:codestar-connections:ap-northeast-2:...:connection/50e...a29735d"
buildspec_path = "./setup/master/buildspec.yml"
github_user = "myyrakle"
github_repository = "websocket-server-node"
github_branch = "master"
codestar๋ ์์ผ๋ฉด github ์ฐ๋ํด์ ์์ฑํด์ผํ๊ณ , ์ด๋ฏธ ์๋ค๋ฉด aws cli๋ฅผ ํตํด์ ์กฐํํด๋ณผ ์ ์๋ค.

๊ทธ๋ฆฌ๊ณ ์์ฑํด์ฃผ๋ฉด ๋๋ค.


๊ทธ๋ฌ๋ฉด API Gateway๊ฐ ์ถ๊ฐ๋์ด์์ํ ๋ฐ

ํ๋ฒ ์ฌ๋ฐฐํฌํด์ฃผ๊ณ
์ ๊ธฐ ์คํ
์ด์ง์ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ๋ค์ฐ๋ฉด ๋๋ค.
์์ฉํด๋ณด๊ธฐ
์๋์ผ๋ก ๊ตฌ์ฑ๋ Websocket ์๋ฒ๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ ์ฑํ
์์คํ
์ ๋๋ ค๋ณด๊ฒ ๋ค.
์ง์ ์ง๊ธฐ ๊ท์ฐฎ๋ค๋ฉด ์๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ๋ฐ์์ ์ฌ์ฉํ๋ค.
https://github.com/myyrakle/aws-serverless-chat/tree/main/frontend
๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ๋ฌ๊ฐ ๋์์ ๊ฐ๊ฐ ์ ์ํ๊ณ
ํ๋์ด ๋ฉ์ธ์ง๋ฅผ ์๋ฉด
๋ค๋ฅธ ๋๋ ์์ผ์ ํตํด์ ๋ฐ์์ค๊ณ
๊ทธ ๋ฐ๋๋ ๊ฐ๋ฅํ๋ค.
์ปค๋ฅ์ ์ ๋ํ ์ ๋ณด๋ ํ ์ด๋ธ์ ์๋์ผ๋ก ์์ด๊ณ ๊ด๋ฆฌ๋๋ค.
์ด๊ฑธ ํตํด์ ๋ค๋ฅธ client๋ค์๊ฒ ๋ฉ์ธ์ง๋ฅผ ์๋ ๊ฒ์ด๋ค.
CI/CD
CodePipeline์ผ๋ก ๊ตฌ์ฑ๋์ด์๊ณ , ์์ค์ฝ๋๋ฅผ ์์ ํ๋ฉด 3๊ฐ์ Lambda๋ฅผ ๋์์ ๋ค ์ ๋ฐ์ดํธ์ณ์ฃผ๋๋ก ํ๋ค.

์ฝ๋ ๊ตฌ์กฐ
Lambda๋ connect, disconnectm, default๊ฐ ์์ฑ๋๋๋ฐ, connect์ disconnect๋ ์์ ํ ์ผ์ด ๋ง์ง๋ ์์ ๊ฒ์ด๋ค. connect๋ Gateway์ ์ํด ์์ผ์ด ์ฐ๊ฒฐ๋์์๋ ๋ค์ด๋๋ชจ ํ ์ด๋ธ์ ์ปค๋ฅ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , disconnect๋ ์ญ์ ํ๊ธฐ๋ง ํ๋ค.
๊ทธ๋์ ๋ณดํต์ default๋ฅผ ์์ ํ๊ฒ ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ํ์ํ action๋ค์ ์ ์ํ๊ณ , ๊ทธ๋๊ทธ๋ ํ์ํ ์ ์ ๋ค์ ์ปค๋ฅ์
๋ชฉ๋ก์ ๊ธ์ด์์ postToConnection์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ์์์ฃผ๋ฉด ๋๋ ๊ฒ์ด๋ค.