- ๋ชฉ์ฐจ
- AWS SQS ๋์ ์ดํดํ๊ธฐ (How to works?!)
- 1 ๋ฐฐ๊ฒฝ - ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค
- 2 SQS ๋?
- 3 SQS ์ํคํ ์ฒ์ ๋์ ๋ฐฉ์
- 4 SQS ํน์ง
- 5 DLQ (Dead-Letter Queue)
SQS๋ AWS์์ ์ ๊ณตํ๋ ๋ง์ดํฌ๋ก์๋น์ค, ๋ถ์ฐ ์์คํ ๋ฐ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ฆฌํ๊ณ ํ์ฅํ ์ ์๋ ์์ ๊ด๋ฆฌํ ๋ฉ์์ง ํ(๋๊ธฐ์ด) ์๋น์ค์ด๋ค.
์ฌ์ฉ์๋กํ์ฌ๊ธ ํ๋ฅผ ๋ฐ๋ก ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๋ ์๊ณ ๋ฅผ ๋์ด์ค๋ค. ํธ๋ฆฌํ๊ธดํ์ง๋ง SQS์ ํน์ง์ ์ ๋๋ก ์ดํดํ๋ ๊ฒ์ด SQS๋ฅผ ์ ๋๋ก ํ์ฉํ๋ ์ธก๋ฉด์์ ๊ต์ฅํ ์ค์ํ๋ค.
์ด๋ฒ ๊ธ์ ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๊ฐ ํ์ํ ์ด์ ๋ฅผ ์์์ผ๋ก SQS๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๋์ํ๋์ง ์์๋ณธ๋ค.
๋ชจ๋ ๊ธ์ ์ถ์ฒ๋ AWS SQS docs์ด๋ค.
SQS์ ๊ฐ๋ ๊ณผ ๋์ ๋ฐฉ์์ ์์๋ณด๊ธฐ์ ์, ์ฐ์ ์ ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๊ฐ ํ์ํ์ง ์ดํด๋ณธ๋ค.
๐โโ๏ธ ์ผ์ ๊ท๋ชจ์ด์์ ํธ๋ํฝ์ด ๋ฐ์ํ๋ ์๋น์ค๋ ๋๋ถ๋ถ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
์ผ์ ๊ท๋ชจ์ด์์ ํธ๋ํฝ์ด ๋ฐ์ํ๊ฑฐ๋ ๊ฑฐ๋ํ ์์คํ ์ ๋๋ถ๋ถ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
์ด๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋๋ฐ ๊ผญ ํ์ํ ์๋น์ค๊ฐ ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค์ด๋ค.
์ฆ, ์๋ก์ ์ญํ ์ ์ํํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(์ปดํฌ๋ํธ)๋ค์ด ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ ์์ ํ๋๋ฐ์์ด์์ ์ค๊ฐ ๋งค๊ฐ์ฒด์ญํ ์ ์ํํ ์ ์๋ ๋น๋๊ธฐ ๋ฉ์์ง ์์คํ ์ด ํ์ํ๋ค.
๐ค ์ ์๋น์ค๋ค์ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๋ฅผ ์ฌ์ฉํ๋๊ฐ?
๋ฐ๋ก ์์กด์ฑ, ์ฑ๋ฅ, ํธ๋์ญ์ ๋ฑ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํจ์ด๋ค.
์๋ฅผ ๋ค์ด, SNS ์๋น์ค๋ฅผ ๋ง๋๋๋ฐ, ์ฌ์ฉ์๊ฐ ํ์๊ฐ์ ํ๋ฉด ์ด๋ฉ์ผ๋ก ๊ฐ์ ์ถํ ์๋ด๋ฅผํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๋ฅผ ์ฌ์ฉํ์ง์๊ณ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ง ์๋ ๊ฒฝ์ฐ
ํ์๊ฐ์ ์ ํ์๊ฐ์ ๊ณผ ์ด๋ฉ์ผ ์ ์ก์ ํ๋์ ์๋ฒ์์ ์ฒ๋ฆฌํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
@Transactional
public void register(RegisterUserCommand registerUserCommand) {
ํ์_๊ฐ์
();
์ด๋ฉ์ผ ์ ์ก();
}
์ ๋ก์ง์ ๋ฌธ์ ์ ์ ์๋์ ๊ฐ๋ค.
- ์์กด์ฑ
- ํ์๊ฐ์ ์๋น์ค๋ 2๊ฐ์ง์ ๋ก์ง์ด ์๋ก ๊ฐํ๊ฒ ์์กด์ ์ด๋ค. (ํ์๊ฐ์ , ์ด๋ฉ์ผ ์ ์ก)
- ์ฆ, ๊ฐํ ๊ฒฐํฉ์ด ๋ฐ์ํ๋ฉฐ, ์ด๋ฉ์ผ ์ฝ๋ ์์ ๋ง์ผ๋ก๋ ํ์ ๊ฐ์ ๋ก์ง์ ์ํฅ์ ์ค ์ ์๋ค.
- ์ฑ๋ฅ
- ํ์๊ฐ์ ํ๋๋ฐ 0.1์ด๋ฉด ๋์ง๋ง, ์ด๋ฉ์ผ ์ ์ก์ 5๋ถ ๊ฑธ๋ฆฐ๋ค๊ณ ๊ฐ์ ํ๋ฉด, ํ์๊ฐ์ ์ด๋ผ๋ ์ ์ฒด ๋ก์ง์ 5๋ถ๋๊ฒ ์์๋๋ค. (๋๊ธฐ ์ฒ๋ฆฌ)
- ํ์๊ฐ์ ์ด๋ผ๋ ํต์ฌ ๋ก์ง์ ์ ์ธํ ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๋ก์ง์ผ๋ก์ธํด ํ์๊ฐ์ ์ ๋ํ ์์ฒญ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ฒ๋๋ ๊ฒ.
- ํธ๋์ญ์
- ํ์๊ฐ์ , ์ด๋ฉ์ผ ์ ์ก ๋ก์ง์ด ์๋ก ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ฌ์๊ธฐ์ ์ด๋ฉ์ผ์์์ ์์ธ๋ก ํต์ฌ ๋น์ฆ๋์ค์ธ ํ์๊ฐ์ ์ด ์ฒ๋ฆฌ ์๋ ์๋ ์๋ค.
- ๋ฐ๋๋ก, ํ์๊ฐ์ ์ฒ๋ฆฌ๊ฐ๋์์์๋ ์ด๋ฉ์ผ์ด ์ ์ก๋ ์๋ ์๋ค.
- ์ฆ, ํ๋๋ผ๋ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํฅ์ ์ค ์ ์๋ค.
๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ ๊ฒฝ์ฐ
์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ 3๊ฐ์ง์ ๋ฌธ์ ๋ฅผ ๋ชจ๋ ํด๊ฒฐํ ์ ์๋ค.
- ์์กด์ฑ
- ํ์๊ฐ์ ์ ํ์๊ฐ์ ์ ์ํํ๊ณ , ์ด๋ฉ์ผ ์ ์ก์ ์ด๋ฒคํธ๋ก ๋ฉ์์ง ์๋น์ค์ ์ ์กํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ Consumer (Event Handler)๊ฐ ์ด๋ฉ์ผ ์ ์ก ๋ฉ์์ง๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ๋ค.
- ์ด๋ ๊ฒ๋๋ฉด ํ์๊ฐ์ ๊ณผ ์ด๋ฉ์ผ ์ ์ก์ ๋ก์ง์ ์๋ก ๋ค๋ฅธ ์๋ฒ(์ปดํฌ๋ํธ)์์ ์ฒ๋ฆฌํ๋ฏ๋ก, ๊ฐ๊ฒฐํฉ์ ํด๊ฒฐํ ์ ์๋ค.
- ์ฑ๋ฅ
- ๊ธฐ์กด์ ๋๊ธฐ์ฒ๋ฆฌ๋ ํ์๊ฐ์
์ ์ ์ฒด ์ฒ๋ฆฌ์๊ฐ์ด
ํ์๊ฐ์ ์๊ฐ + ์ด๋ฉ์ผ ์ ์ก ์๊ฐ
์ด์๋ค. - ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ ์ ์ก์ ๋น๋๊ธฐ๋ก ์ํํ๋ฉด, ํ์๊ฐ์
์ ์ ์ฒด ์์์๊ฐ์ ์ค์ง
ํ์๊ฐ์ ์๊ฐ
๋ง ์์๋๊ฒ๋๋ค.
- ๊ธฐ์กด์ ๋๊ธฐ์ฒ๋ฆฌ๋ ํ์๊ฐ์
์ ์ ์ฒด ์ฒ๋ฆฌ์๊ฐ์ด
- ํธ๋์ญ์
- ํต์ฌ ํ์๊ฐ์ ๋ก์ง์ด ๋ชจ๋ ์ํ๋๋ฉด ํธ๋์ญ์ ์ COMMITํ๊ณ , ๋น๋๊ธฐ๋ก ์ด๋ฒคํธ๋ฅผ ์ ์กํ๋ฉด ๋๋ค.
๐โโ๏ธ ๊ฒฐ๋ก - ๋น๋๊ธฐ ๋ฉ์์ง ์๋น์ค๋ฅผ ํ์ฉํ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ .
- ๋ฎ์ ๊ฒฐํฉ๋ (Decoupling)
- ํ๊ฐ์ง ๋น์ฆ๋์ค ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ์ฌ๋ฌ๊ฐ์ง ์๋ฒ์ ์์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํํ๊ฒํจ์ผ๋ก์จ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ค.
- ๋น๋๊ธฐ (Asynchronous)
- ๋ถ๊ฐ ๋น์ฆ๋์ค (ex. ์ด๋ฉ์ผ ์ ์ก, SMS)๋ฑ์ ๋ฉ์์ง ํ์ ์ ์ฅํ์ฌ, ๋น๋๊ธฐ์ ์ผ๋ก ์ํํ ์ ์๋ค.
- ์ฆ, ๋ฉ์์ง ํ๋ ์์ฑ๋ ๋ฉ์์ง์ ์ ์ฅ, ์ ์ก์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋๊ธฐํ๋ก ์งํํ์ง ์๊ณ , ํ์ ๋ฃ์ด๋๊ณ ๋์ค์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๊ธฐ์กด ๋๊ธฐํ ๋ฐฉ์์ ๋ง์ ๋ฉ์์ง๊ฐ ์ ์ก๋ ๊ฒฝ์ฐ ๋ณ๋ชฉ์ด ์๊ธธ ์ ์๊ณ , ๋ค์ ๋ค์ด์ค๋ ์์ฒญ์ ๋ํ ์๋ต์ด ์ง์ฐ๋๋ค.
- ํ์ฅ์ฑ (Scalable)
- ์์ฐ์ ์๋น์ค ํน์ ์๋น์ ์๋น์ค๋ฅผ ์ํ๋ ๋๋ก ํ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ฅ์ฑ์ด ์ข๋ค.
- ํ๋ ฅ์ฑ (Resilience)
- ์๋น์ ์๋น์ค๊ฐ ๋ค์ด๋๋๋ผ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ค๋จ๋๋ ๊ฒ์ ์๋๋ค. ๋ฉ์์ง๋ ๋ฉ์์ง ํ์ ๋จ์ ์๋ค. ์๋น์ ์๋น์ค๊ฐ ๋ค์ ์์๋ ๋๋ง๋ค ์ถ๊ฐ ์ค์ ์ด๋ ์์ ์ ์ํํ์ง ์๊ณ ๋ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์์ํ ์ ์๋ค.
- ๋ณด์ฅ์ฑ (Guarantees)
- ๋ฉ์์ง ํ๋ ํ์ ๋ณด๊ด๋๋ ๋ชจ๋ ๋ฉ์์ง๊ฐ ๊ฒฐ๊ตญ ์๋น์ ์๋น์ค์๊ฒ ์ ๋ฌ๋๋ค๋ ์ผ๋ฐ์ ์ธ ๋ณด์ฅ์ ์ ๊ณตํ๋ค.
์ด์ธ์๋ AWS Lambda๋ฑ์ ํ์ฉํ ์ฌ๋ก๋ฑ๋ฑ ๋ฉ์์ง ์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ฌ๋ก๋ ๋ง๋ค.
Amazon Simple Queue Service (Amazon SQS) ๋ ๋ด๊ตฌ๋ ฅ ์๊ณ ๊ฐ์ฉ์ฑ์ด ๋ฐ์ด๋ ๋ณด์ ํธ์คํ ๋๊ธฐ์ด์ ์ ๊ณตํ๋ฉฐ ์ด๋ฅผ ํตํด ๋ถ์ฐ ์ํํธ์จ์ด ์์คํ ๊ณผ ๊ตฌ์ฑ ์์๋ฅผ ํตํฉ ๋ฐ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html
AWS SQS๋ ๋ง์ดํฌ๋ก์๋น์ค, ๋ถ์ฐ ์์คํ ๋ฐ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ฆฌํ๊ณ ํ์ฅํ ์ ์๋ ์์ ๊ด๋ฆฌํ ๋ฉ์์ง ๋๊ธฐ์ด ์๋น์ค์ด๋ค.
์ฝ๊ฒ ๋งํด ์์ ๊ด๋ฆฌํ ๋ฉ์์ง ๋ถ์ฐ ๋๊ธฐ์ด ์๋น์ค์ด๋ค.
๋ฉ์์ง๋ ์์ ์์๊ฒ Push๋์ง ์์ผ๋ฉฐ, ์์ ์๋ ๋ฉ์์ง๋ฅผ ์์ ํ๊ธฐ์ํด SQS๋ฅผ Polling ํด์ผํ๋ค. ์ด๋ ๋ฉ์์ง๋ ์ต๋ 14์ผ๋์ SQS์ ์ ์ฅํ ์ ์๋ค.
๋ ๋ค๋ฅธ ํน์ง์ผ๋ก SQS๋ ์ฌ๋ฌ ์์ ์๊ฐ ๋์์ ๋ฉ์์ง๋ฅผ ์์ ํ ์ ์๋ค. ์ฆ, Point-to-Point ๋ฐฉ์์ ์ฑํํ์ฌ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์์ ์๋ ๋ฉ์์ง๋ฅผ ์์ , ์ฒ๋ฆฌ ๋ฐ ์ญ์ ํ ์ ์๋ค.
SQS๋ ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ์์ฑ(Produce)ํ๊ณ , ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ์์ง๋ฅผ ์๋นํ ์ ์๋๋ก ํ๋ฅผ ์ ๊ณตํ๋ ๋ถ์ฐ ํ ์์คํ ์ด๋ค.
์ค์ํ ๊ฒ์ SQS๋ ๋ถ์ฐ๋ ํ ์์คํ ์ด๋ผ๋ ๊ฒ์ด๋ฉฐ, ์ ์ฌ์ ์ธ ๋ฉ์์ง ์ ์ฅ์ ์ญํ ์ํ๋ค.
SQS ๋ฉ์์ง ์์คํ ์ ๊ตฌ์ฑํ๋ ์์๋ ํฌ๊ฒ 3๊ฐ์ง๋ค.
- ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ค (Producer์ Consumer)
- SQS ํ
- ๋ฉ์์ง (message in the queue)
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html
์์ ๊ฐ์ด SQS๋ ํ ํ์ ๋ฉ์์ง๋ ์ฌ๋ฌ SQS ์๋ฒ์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ค.
์ ๊ทธ๋ฆผ์์ Component๋ Producer์ Comsumer๋ฅผ ์๋ฏธํ๋ค.
๐ค ์ ์ค๋ณต๋ ๋ฉ์์ง๋ฅผ ๋ถ์ฐ๋ ์์คํ ์ผ๋ก ๊ตฌ์ฑํ์ฌ ์ ์ฅํ ๊น?
๊ณต์๋ฌธ์์์๋ ๊ด๋ จํ์ฌ ๋ช ํํ๊ฒ ์๊ธฐํด์ฃผ๋ ๋ถ๋ถ์ ์์ง ์ฐพ์ง๋ชปํ์ผ๋, ํ์ ์๊ฐ์ ๋ณดํต์ ์ค๋ณตํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ถ์ฐ ์์คํ ์์ ์๋ ์ด์ ๋ก ์์ ๊ฐ์ด ๊ตฌ์ฑํ๋ค๊ณ ๋ณธ๋ค.
- High Availability (๊ณ ๊ฐ์ฉ์ฑ)
- ์ค๋ณต์ฑ์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฉ์์ง๊ฐ ์ฌ๋ฌ ์๋ฒ ๋ฐ ๊ฐ์ฉ์ฑ ์์ญ์ ๊ฑธ์ณ ๋ณต์ ๋๋๋กํ๋ค. ํ ์๋ฒ์์ ๋๋ ๊ฐ์ฉ ์์ญ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋๋ผ๋ ๋ค๋ฅธ ์์น์์ ์ค๋จ์์ด ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
- Fault Tolerance
- Durabilitry (๋ด๊ตฌ์ฑ)
- ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต ์ ์ฅํจ์ผ๋ก์จ ๋ฐ์ดํฐ ์์ค ์ํ์ ์ต์ํํ๊ณ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ญ์ ํ ๋๊น์ง ๋ฉ์์ง๊ฐ ์์ ์ ์ผ๋ก ์ ์ฅ๋๋๋กํ๋ค.
- Load Balancing (๋ถํ ๋ถ์ฐ)
- ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต ์ ์ฅํจ์ผ๋ก์จ ๋ง์ ์์ ๋ฐ์ดํฐ์ ๋์ ์ปจ์๋จธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- SQS๋ ์ฌ๋ฌ ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐํ๊ณ ๋ฉ์์ง ์กฐํ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒํ๋ค.
- Geographical Distribution (์ง๋ฆฌ์ ๋ถ์ฐ)
- ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ง๋ฆฌ์ ๋ถ์ฐ ๋ฐ ์ฌํด ๋ณต๊ตฌ๋ฅผ ํ์ฉํ๋ค.
- ์ค๋ณต ์คํ ๋ฆฌ์ง๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ์ง์ญ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ์ฌ ๊ธฐ์ ์ด ๋ฐ์ดํฐ ๋ณต์๋ ฅ์ ํตํด ์ฌ๋ฌ ์ง๋ฆฌ์ ์์น์์ ์ด์ํ ์ ์๋๋ก ํ๋ค.
- AWS์ ๊ฒฝ์ฐ ๋ค์ํ ๋ฆฌ์ ์์ ์๋น์ค๋๋ฏ๋ก, ๊ด๋ จํด์ ๋ค์ํ ์ง์ญ์์ ์ ๊ทผ์ ๋น ๋ฅด๊ฒ ์๋ต์ ์ฃผ๊ธฐ์ํด์๋ ์ฌ์ฉ๋์ง์์๊น์ถ๋ค. (๋ฌผ๋ก ์ถ์ธก์ด๋ค.)
SQS ํ์์ ๋ฉ์์ง ์์ฑ๋ถํฐ ์ญ์ ๊น์ง์ ๋ฉ์์ง ์๋ช ์ฃผ๊ธฐ๋ ์๋์ ๊ฐ๋ค.
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-architecture.html
- ์ปดํฌ๋ํธ 1 (Producer)๋ ๋ฉ์์ง A๋ฅผ ์์ฑํ์ฌ ํ์ ์ ์กํ๋ค. ์ด ๋ฉ์์ง๋ SQS ์๋ฒ๋ค์ ์ค๋ณต ๋ถ์ฐ๋์ด ์ ์ฅ๋๋ค.
- SQS๋ ํ๋์ ๋ฉ์ธ์ง๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ ์ ์ฅํ๋ค.
- ์ปดํฌ๋ํธ 2 (Consumer)๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ค๋น๊ฐ ๋๋ฉด ํ์์ ๋ฉ์์ง๋ฅผ ์์ฒญํ๊ณ ํ๋ก๋ถํฐ ๋ฉ์์ง A๊ฐ ๋ฐํ๋๋ค. (์ด๋ ํด๋น ๋ฉ์์ง๋ inflight ์ํ๋ผ๊ณ ๋ถ๋ฅธ๋ค.) ์ด๋ ๋ฉ์์ง A๋ ์ฒ๋ฆฌ๋๋ ๋์ ํ์ ๊ทธ๋๋ก ๋จ์์์ผ๋ฉฐ, ๋ฉ์์ง์ ์ค์ ๋ ์ ํ ์๊ฐ(Visibility timeout)์ด ์ด๊ณผ๋๊ธฐ์ ๊น์ง ํ์ ์ปจ์ ์์ฒญ์์ ๋ฉ์์ง A๊ฐ ๋ฐํ๋์ง์๋๋ค. (๋ณด์ฌ์ง์ง๋์๋๋ค)
- ์ปดํฌ๋ํธ 2 (Consumer)๋ ๋ฉ์์ง๋ฅผ ์ ์ ์ฒ๋ฆฌํ๋ค๋ฉด, ์ง์ SQS์ ๋ฉ์์ง A ์ญ์ ๋ฅผ ์์ฒญํ๋ค. ๋ฉ์์ง A๋ ์ญ์ ๋์ด ์ ํ ์๊ฐ (Visibility timeout)์ด ์ด๊ณผ๋๊ณ ์๋ ๋ฉ์์ง๋ฅผ ๋ค์ ์ปจ์ํ์ง ๋ชปํ๋ค.
SQS๋ ํ์ฅ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋ ๋ธ๋ก์ปค ์ญํ ์ ํ๋ค.
์ด๋ฒ์ SQS์ ํน์ง๋ค์ ์ดํด๋ณธ๋ค.
SQS๋ Standard ํ์ FIFO ํ๋ฅผ ์ ๊ณตํ๋ค.
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-types.html
๋น์ฆ๋์ค๋ณ๋ก ํ์ ์ ๊ฒฐ์ ํ๋ ์์๋ ์๋์ ๊ฐ๋ค.
- Message Ordering
- Standard๋ ์ต๋ํ ์์๋๋ก (best-effort ordering) ๋ฉ์์ง๋ฅผ ์ ๋ฌํ์ง๋ง, ์์๊ฐ ์๋ฒฝํ ๋ณด์ฅ๋์ง ์๋๋ค.
- FIFO๋ ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด, first-in-first-out์ผ๋ก ์์๋ฅผ ์๋ฒฝํ ๋ณด์ฅํ๋ค.
- Delivery
- Standard๋ ์ ์ด๋ ํ๋ฒ ๋ฉ์์ง ์ ๋ฌ์ ๋ณด์ฅํ๋ค. ๋ค๋ง, ๊ฐ๋์ฉ ์ค๋ณต๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ์ ์๋ค.
- FIFO๋ ์ ํํ ํ๋ฒ๋ง ์ ๋ฌ๋๋ฉฐ, ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ง์ฐ๊ธฐ์ ๊น์ง ํ์ ๋จ์์๋๋ค.
- Throughput
- Standard๋ unlimited throughput์ ์ง์ํ๋ค. ์ฆ, ์ฒ๋ฆฌ๋์ ๊ดํด์ ์ ํ์ด ์๋ค.
- FIFO๋ ์ด๋น ์ต๋ 300๊ฐ์ API๋ก ์ ํํ๋ค.
- Use cases
- ์ค๋ณต ๋ฐ ์๋ชป๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํ ํญ์ Standard๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- FIFO์ ํน์ฑ๊ณผ ์ค๋ณต๋ ๋ฉ์์ง ์์ ์ด ์ ๋ ๋๋ฉด ์๋๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
FIFO ๊ด๋ จ๋ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค๋ณด๋ ํ๊ฐ์ง ์๋ฌธ์ด ์๊ฒผ๋ค.
FIFO ํ๋ ์ด๋ป๊ฒ ์ฌ๋ฌ ์ปจ์๋จธ๋ค์ ์์ฒญ์ ์์๋๋ก ์ฒ๋ฆฌํ ์ ์๋๊ฒ์ผ๊น?
๊ด๋ จ๋ ๋ด์ฉ์ ์ฐพ๋ค๋ณด๋ ์ ์ ๋ฆฌ๋ ๊ธ์ด ์์ด์ ๊ฐ์ ธ์ ์ ๋ฆฌํด๋ณธ๋ค.
๐ค ์ฌ๋ฌ ํ๋ก๋์์ ์์ฒญ์ ์ด๋ป๊ฒ ์์๋๋ก ํ์ ์ ์ฅํ ๊น?
์ถ์ฒ: https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/
์์ ๊ฐ์ด ์ฌ๋ฌ ํ๋ก๋์์ ๋ฉ์์ง๊ฐ ํ์ ์ ์ฅ๋ ๋ ์์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ด๋ ต๋ค.
SQS๋ ์์ ๊ฐ์ด ์ฌ๋ฌ ํ๋ก๋์์ ๋ฉ์์ง ์์๋ฅผ ๋ณด์ฅํ๊ธฐ์ํด ์๋์ ๊ฐ์ด ๊ทธ๋ฃน์ ๋๋ ํ์ ์ ์ฅํจ์ผ๋ก์จ ์์๋ฅผ ๋ณด์ฅํ๋ค
์ถ์ฒ: https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/
์ฆ, ๊ฐ ํ๋ก๋์๋ณ๋ก ์์ฒญํ ๋ฉ์์ง๋ฅผ ํ๋์ ๊ทธ๋ฃน์ ๋ด์ ์ ์ฅํ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ๋๋ฉด ๊ฐ ํ๋ก๋์๋ณ๋ก ์์ฑํ ๋ฉ์์ง๋ ๋ชจ๋ ์์๋ฅผ ๋ณด์ฅ๋ฐ๋๋ค.
๐ค ์ฌ๋ฌ ์ปจ์๋จธ์ ์์ฒญ์ ์ด๋ป๊ฒ ์์๋๋ก ์ฒ๋ฆฌํ๋๊ฐ?
๋ฐ๋๋ก ์ปจ์ํ๋ ๋ถ๋ถ์์ ๋ฌธ์ ๋ ์ด๋ป๊ฒ ์์๋๋ก ์ปจ์ํ๋๋์ด๋ค.
์ถ์ฒ: https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/
AWS๋ ์์ ๊ฐ์ด ๊ทธ๋ฃน๋ณ๋ก ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋๋กํ๋ค.
์ฆ, ์ปจ์๋จธ๋น ํ ์์ ์ ํ ๊ทธ๋ฃน์ ๋ฉ์์ง๋ค๋ง ์ฒ๋ฆฌํ ์ ์๋๋ก ํจ์ผ๋ก์จ, ๊ทธ๋ฃน์์์์ ๋ฉ์์ง๋ ์์๋ฅผ ๋ณด์ฅ๋ฐ์ ์ ์๊ฒ๋๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ๊ทธ๋ฃน๋ณ๋ก ๋ชจ๋ inflight (์ปจ์๋์์ง๋ง, ์์ง ํ์์ ์ญ์ ๋์ง์๋ ์ํ) ์ํ๊ฐ์๋๊ฒฝ์ฐ ๊ทธ๋ฃน๋ณ๋ก ๋จ์ ๋ฉ์์ง๋ฅผ ๋ฌถ์ด์ ๋ฐํํ ๋๋ ์๋ค๊ณ ํ๋ค.
๊ฐ์์ฑ (๋ณด๊ธฐ) ์๊ฐ ์ ํ
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
- ๋ฉ์ธ์ง๊ฐ ์ปจ์๋์ ๋ ๋ค๋ฅธ ์ปจ์๋จธ๊ฐ ํด๋น ๋ฉ์ธ์ง๊ฐ ์ญ์ ๋๊ธฐ ์ ๊น์ง ์ ๊ทผํ ์ ์๋๋ก ๋ง์๋๋ ์๊ฐ.
- ์ปจ์๋จธ๊ฐ ๋๊ธฐ์ด์์ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ์ฒ๋ฆฌํ๋ฉด ๋ฉ์์ง๋ ๋๊ธฐ์ด์ ๋จ์ ์๋๋ค. SQS ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก ์ญ์ ํ์ง ์๋๋ค. SQS๋ ๋ถ์ฐ ์์คํ ์ด๋ฏ๋ก ์ปจ์๋จธ๊ฐ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ์์ ํ๋ค๋ ๋ณด์ฅ์ด ์๋ค. (์: ์ฐ๊ฒฐ ๋ฌธ์ ๋๋ ์๋น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธ์ ). ๋ํ, ์ปจ์๋จธ๋ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ์ฒ๋ฆฌํ ํ ๋๊ธฐ์ด์์ ์ด ๋ฉ์์ง๋ฅผ ์ญ์ ํด์ผ ํ๋ค.
- ์ด์ ๊ฐ์ด ๋ฉ์์ง๋ฅผ ์์ ํ ์งํ์๋ ๋ฉ์์ง๊ฐ ํ์ ๊ทธ๋๋ก ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฐจ๋จํ๋ ๊ธฐ๊ฐ์ด Visibility timeout์ด๋ค.
- ํ ํ๋์ ์ฌ๋ฌ ์๋ฒ๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ ๋์ผํ ๋ฉ์์ง๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ์ํด ์ฌ์ฉ๋๋ค.
- ์ปจ์๋จธ์์ ํ๋์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ์๊ฐ๋งํผ ์ค์ ํ๋ฉด ๋๋ค. (์ปจ์๋จธ ํ๊ท ์ฒ๋ฆฌ์๊ฐ)
์ง์ฐ ์ ์ก
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html
- Delivery delay๋ ์ ๋ฉ์ธ์ง๊ฐ ํ์ ์ ์ก๋๊ณ Consumer์๊ฒ ์ ์ก๋๊ธฐ๊น์ง ์ผ์ ์๊ฐ ์ง์ฐ์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
- Consumer๋ ์ ๋ฉ์ธ์ง๊ฐ ํ์ ์ ์ก๋๋๋ผ๋ ํด๋น ์๊ฐ๋์ ์ด ๋ฉ์ธ์ง๋ฅผ ์ด์ฉํ ์ ์๋ค. (๋ณด์ด์ง ์๋๋ค.)
- ๋ฐํ๋ ๋ฉ์์ง๋ฅผ ์ปจ์๋จธ๊ฐ ํน์ ์๊ฐ ๋์ ๋ฉ์์ง๋ฅผ ๋ฐ์ง ๋ชปํ๊ฒํ๋ ๊ธฐ๋ฅ. (๋ฉ์์ง ๊ฐ๊ฐ์ ์ง์ฐ ์๊ฐ์ ์๋ฏธํ๋ค.)
- ์ฌ์ฉ ์ด์
- ์๋ฅผ ๋ค์ด, ๋ณดํต ์ด๋ฒคํธ ์ฒ๋ฆฌ๋
์ด๋ฒคํธ ๋์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ โ ์ด๋ฒคํธ ๋ฐํ โ ์ด๋ฒคํธ ์ปจ์ โ ์ด๋ฒคํธ ๋์ ๋ฐ์ดํฐ ์กฐํ
์์ผ๋ก ์ด๋ค์ง๋ค. - ์ด๋ ์ด๋ฒคํธ ๋์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ํ ์ปค๋ฐ๋๊ธฐ ์ ์ด๋ฒคํธ ์ปจ์๊น์ง ์๋ฃ๋์ด ๋ณ๊ฒฝ๋์ง ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์ํฉ์ด ์์ ์ ์๋ค. ์ด๋ฌํ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ์ํด ์ฌ์ฉ๋๋ค.
- ๋ณดํต replica lag์ ์ํด replication ์ ํฉ์ฑ ๋ฌธ์ ๋ ํธ๋์ญ์ ์์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ๋ณดํต ์ด๋ฒคํธ ์ฒ๋ฆฌ๋
๋ฉ์์ง ๋ณด๊ด ๊ธฐํ. ๋ฉ์์ง๋ณ TTL๊ณผ ๊ฐ์ ๊ฐ๋
- SQS๋ ์๋์ผ๋ก ๋ฉ์์ง๋ฅผ ์ญ์ ํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ปจ์๋จธ๊ฐ ์ญ์ ํ๊ธฐ์ ๊น์ง์ ๋ฉ์์ง ๋ณด๊ด ๊ธฐํ์ ์ค์ ํด์ค ์ ์๋ค.
- ์ด ๊ธฐํ์ด ์ง๋๋ฉด ํด๋น ๋ฉ์์ง๋ ์๋์ผ๋ก SQS์์ ์ ๊ฑฐํ๋ค.
๋ฉ์์ง ์์ (
ReceiveMessage
) API์ Timeout ์ค์ ์ ๋ฐ๋ฅธ Polling ๋ฐฉ์์ด ๋๋์ ธ์๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
SQS๋ ๋ฉ์์ง๋ฅผ ์ปจ์ํ๊ธฐ์ํด Polling ์ ๋ต์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ Polling ์ ๋ต์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
๐โโ๏ธ Short Polling
Short Polling์ Consumer์์ ๋ฉ์์ง Polling์ SQS ์๋ฒ์ ํ์ ์ธํธ (๊ฐ์ค์น ๊ธฐ๋ฐ ๋ฌด์์ ๋ฐฐํฌ ๊ธฐ์ค)๋ฅผ ์ํ๋งํ๊ณ ํด๋น ์๋ฒ์์๋ง ๋ฉ์์ง๋ฅผ ํ์ ๋ฐ ๋ฐํํ๋ค.
๋ฐ๋ผ์ ํน์ ReceiveMessage
์์ฒญ์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ๋ฐํํ์ง ์์ ์ ์๋ค. ๋ฐ๋๋ก ๋ฉ์์ง๋ฅผ ์์ฒญํ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋๊ธฐ์๊ฐ ์์ด ๋ฐ๋ก ๋ฐ์ ์ ์๋ค.
์ถ์ฒ: https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-short-long-polling-differences
์ ๊ทธ๋ฆผ์ ํ ์ปดํฌ๋ํธ๊ฐ ๋ฉ์์ง ์์ (ReceiveMessage
)์ ์์ฒญํ๊ณ , Standard ํ์์ ๋ฐํ๋๋ ๋ฉ์์ง์ Short Polling ๋์์ ๋ณด์ฌ์ค๋ค.
SQS ๋ช ๊ฐ์ ์๋ฒ (ํ์)๋ฅผ ์ํ๋งํ๊ณ ์ด๋ค ์๋ฒ์์ ๋ฉ์์ง A, C, D, B๋ฅผ ๋ฐํํ๋ค.
๋ฐํ๋์ง์๋ E๋ ์ํ๋งํ ์๋ฒ์ ์์ด์ ํด๋น ์์ฒญ์์ ๋ฐํ๋์ง ์์ง๋ง ์ดํ ์์ฒญ์์ ๋ฐํ๋๋ค. (๋ฌผ๋ก ์ํ๋ง์์ ๋ ๋ฐํ๋์ง ์์ ์ ์๋ค.)
๐โโ๏ธ Long Polling
๋ฉ์์ง ์์ ์์ฒญ (ReceiveMessage
) API์ ๋ํ ๋๊ธฐ ์๊ฐ ์ค์ ์ด 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ Long Polling ์ ๋ต์ด ์ฌ์ฉ๋๋ค. (์ต๋ 20์ด)
Long Polling ์ฌ์ฉ์ ๋น ์๋ต์ ์๋ฅผ ์ค์ฌ SQS ์ฌ์ฉ ๋น์ฉ์ ์ ๊ฐํ ์ ์๋ค๊ณ ํ๋ค.
Long Polling ์ฌ์ฉ์ ์ผ์ ์๊ฐ๋์ ์ํ๋ง์ด ์๋ ๋ชจ๋ SQS ์๋ฒ๋ฅผ ์กฐํํ์ฌ ๋ฉ์์ง๋ฅผ ์๋ตํ๋ค.
์ด๋ ๋ฉ์ธ์ง๊ฐ ์์ผ๋ฉด ๋ฐ๋ก ๊ฐ์ ธ์ค๊ณ , ๋ฉ์ธ์ง๊ฐ ์์ผ๋ฉด ๋ฉ์ธ์ง๊ฐ ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆผ. ๋๋ ๋ฉ์ธ์ง๊ฐ ๊ณ์ ์ค์ง ์์ผ๋ฉด ๊ธด ํด๋ง ์๊ฐ๊น์ง ๊ธฐ๋ค๋ฆผ.
Receive message wait time
Short Polling๊ณผ Long Polling์ ํ ์์ฑ์ Receive message wait time
๊ฐ์ ํตํด ์ค์ ํ ์ ์๋ค.
- Receive message wait time์ ๋ฉ์ธ์ง ํด๋งํ๊ธฐ ์ํด ํ(๋๊ธฐ์ด)์ ์ ๊ทผํ์ ๋ ๋ฉ์ธ์ง๊ฐ ์์ ๊ฒฝ์ฐ ์ผ๋ง์ ์๊ฐ๋์ ํ์ ๋จธ๋ฌด๋ฅผ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฐ์ ์๋ฏธํ๋ค.
- ๊ธฐ๋ณธ ๊ฐ์ 0์ด์ด๋ฉฐ, Short Polling์ ์ฌ์ฉํ๋ค. 0์ด ์๋ ๊ฐ์ ์ค์ ํ ๊ฒฝ์ฐ Long Polling์ ์ฌ์ฉํ๋ค.
๋ฉ์์ง ํ ์์คํ ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด, ์ปจ์ํ ์๋ ์์ง๋ง ์ฒ๋ฆฌํ ์ ์๋ ๋ฉ์์ง๊ฐ ์กด์ฌํ๋ค.
์ด๊ฒฝ์ฐ ํด๋น ๋ฉ์์ง๋ฅผ ์ปจ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฉ์์ง ํ ์์คํ ์ ํฐ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์๋๋ฐ, ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด์ํด์ฃผ๋ ๊ฒ์ด DLQ ์ญํ ์ด๋ค.
๋ง์ ๋ถ์ฐ ์์คํ ์ SQS๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค, ๋ถ์ฐ ์์คํ ๋ฐ ์๋ฒ๋ฆฌ์ค ์ฑ์ ๋ถ๋ฆฌํ๊ณ ํ์ฅํ๋ ๋ฉ์์ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ค.
์ด๋ ํ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ Dead-Letter Queue๋ก ๋ฉ์์ง๋ฅผ ์ฎ๊ฒจ ์ ์ฅํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, Producer๋ Consumer ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ์๋ชป๋ ์กฐ๊ฑด ๋๋ ์ฝ๋์ ๋ฌธ์ ๋ก ์์์น ๋ชปํ ์ํ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ก ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋ค์ ๋งํด ๋ฉ์์ง๋ ์์ ํ์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์์ธ๊ฐ ๋ฐ์ํด์ ํ์ ๋ฉ์์ง๋ฅผ ์ญ์ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค.
ex. ์ฃผ๋ฌธ๊ด๋ จ๋ ์ด๋ฒคํธ๋ก ์ปจ์ํ๋๋ฐ ์ํ์ด ์ญ์ ๋์ด ์ํ ID๊ฐ ์กด์ฌํ์ง ์๋๋ค๊ฑฐ๋..
์ด๋ ๊ฒ ์๋ณธ ํ์์ ์ง์ ๋ ํ์๋งํผ ๋ฉ์์ง๋ฅผ Polling ํด๊ฐ์ง๋ง, ๊ณ์ํด์ ์ญ์ ๋์ง์๋ ๋ฉ์์ง๋ฅผ DLQ๋ก ์ด๋์ํฌ ์ ์๋ค.
DLQ๋ ์ผ๋ฐ์ ์ธ ํ์ ๋์ผํ๋ฉฐ, ๋์๋ฐฉ์์ ์ผ์ ํ์ (maxReceiveCount
)๋งํผ ์์ ์์ฒญ์ผ๋ก ๋ฐํํ์ผ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ (์ฝ์ด๊ฐ์ง๋ง ํด๋น ๋ฉ์์ง ์ญ์ ์์ฒญ์ด ์ค์ง ์์)๋์ง์์์๋ DLQ๋ก ํด๋น ๋ฉ์์ง๋ฅผ ์ด๋์ํค๋ ๋ฐฉ์์ด๋ค.
๐โโ๏ธ ๊ณตํต ์ด์ - ๋ฉ์์ง ์ค๋ฅ ์์ธ ํ์
DLQ์ ํต์ฌ ์ญํ ์ ์๋ฒฝํ ์๋น๋์ง์์ ๋ฉ์์ง์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
DLQ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋ฉ์์ง๋ฅผ ๋ฐ๋ก ๋ณด๊ดํ์ฌ ์ฒ๋ฆฌ๊ฐ ์คํจํ ์ด์ ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
๐โโ๏ธ Standard ํ
Standard ํ์ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ ์ ์๋ ๋ฉ์์ง๊ฐ ๊ณ์ํด์ ์๋ณธ ํ์ ๋จ์ ๋ฐ๋ณต์ ์ผ๋ก ์ปจ์๋จ์ผ๋ก์จ SQS ๋น์ฉ ์ฆ๊ฐ์ ์ปจ์๋จธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถํ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
์คํจํ ๋ฉ์์ง๊ฐ ๋ง๋ฃ๋ ๋๊น์ง ๊ณ์ ์ฒ๋ฆฌ๋ฅผ ์๋ํ๋ ๊ฒ๋ณด๋จ, ๋ช ๋ฒ ์๋ํ ๋ค DLQ๋ก ์ด๋์์ผ์ ์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ์ข๋ค.
๐โโ๏ธ FIFO ํ
FIFO ํ๋ ์์๋๋ก ๋ฉ์์ง๋ฅผ ์๋นํ์ฌ ์ ํํ ํ ๋ฒ์ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.
์ด๋ ๊ฒํ๋ฉด ํ๋ฅผ ๊ฐ๋ก๋ง๊ณ ์๋ ์ปจ์๋จธ์์ ์ฒ๋ฆฌ๋ชปํ ๋ฉ์์ง๊ฐ ์ ๋๋ก ์ฒ๋ฆฌ๋ ๋๊น์ง ์ฒซ ๋ฒ์งธ ๋ฉ์์ง ๊ทธ๋ฃน์ ์ฌ์ฉํ ์ ์๋ ์ํ๊ฐ ๋์ง๋ง, ์ปจ์๋จธ๋ ๋ค๋ฅธ ๋ฉ์์ง ๊ทธ๋ฃน์ผ๋ก๋ถํฐ ์ ๋ ฌ๋ ๋ฉ์์ง๋ฅผ ๊ณ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ฆ, ํ ๊ทธ๋ฃน์์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฉ์์ง๊ฐ ๊ณ์ํด์ ํ์ ๋จ์ ํด๋น ๊ทธ๋ฃน์ ๋ค์ ๋ฐฐ์น์ฌ์ด์ฆ๋งํผ์ ์ด๋ฒคํธ๋ฅผ ์ฝ์ ์ ์๊ณ , ๋ฐ๋ณต์ ์ผ๋ก ํด๋น ๊ทธ๋ฃน์ ์ปจ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถํ๋ฅผ ์ผ์ผํฌ ์ ์๋๋ฐ, ํด๋น ๊ทธ๋ฃน์ ๋ฉ์์ง๋ฅผ DLQ๋ก ๋ณด๋์ผ๋ก์จ ํด๋น ๊ทธ๋ฃน์ ๋ค์ ๋ฐฐ์น ์ฌ์ด์ฆ๋งํผ์ ๋ฉ์์ง๋ฅผ ์ฝ์ด๋ค์ผ ์ ์๋ค.
FIFO์ ๋ฉ์์ง ๊ทธ๋ฃน ๊ด๋ จํด์๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ .
- ์ฌ์ฉ ์ถ์ฒ
- Standard ํ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ. ์์๊ฐ ์ค์ํ์ง ์์ผ๋ฏ๋ก, DLQํ๊ฐ ์๋ชป๋ ๋ฉ์์ง ์ ์ก ์์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๋์๋๋ค.
- ์์ ํ ์๋ ์์ง๋ง ์ฒ๋ฆฌํ ์ ์๋ ๋ฉ์์ง์ ๋ ธ์ถ๋ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๊ณ ์ถ์๋.
- ์ฌ์ฉ ๋น์ถ์ฒ
- ์ข ์ ํ๋ก์ธ์ค๊ฐ ํ์ฑํ๋๊ฑฐ๋ ๋ชจ๋ ๋ฉ์์ง๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ ๋ฉ์์ง ์ ์ก์ ๋ฌด๊ธฐํ์ผ๋ก ๊ณ์ ์ฌ์๋ํด์ผํ ๋๋ ๋น์ถ์ฒํ๋ค.
- ๋ฉ์์ง ๋๋ ์์ ์ ์ ํํ ์์๋ฅผ ๊นจ๊ณ ์ถ์ง ์๋ค๋ฉด FIFO ํ์ DLQ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค.
DLQ ๋์๋ฐฉ์
์ถ์ฒ: https://aws.amazon.com/ko/blogs/korea/enhanced-dlq-management-sqs/
์ผ์ ํ์ (maxReceiveCount
)๋งํผ ์์ ์์ฒญ์ผ๋ก ๋ฐํํ์ผ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ (์ฝ์ด๊ฐ์ง๋ง ํ์์ ์ญ์ ๋์ง์์)๋์ง์์ DLQ๋ก ์ด๋๋ ๋ฉ์์ง๋ Redrive ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ค์ ์๋ณธ ํ๋ก ์ด๋์ํฌ ์๋ ์๋ค.