AWS λ©μμ§
π¬ AWS λ©μμ§ μλ²½ μ 리: SQS, SNS, Kinesis μ°¨μ΄μ νμ©λ²
νλ μ ν리μΌμ΄μ
μ μ μ 볡μ‘ν΄μ§κ³ μμΌλ©°, κ° κΈ°λ₯μ΄ λ³λμ μλΉμ€λ‘ λλμ΄ λ°°ν¬λλ κ²½μ°κ° λ§μ΅λλ€. μ΄λ° νκ²½μμ μ€μν 건, μλΉμ€ κ°μ μμ μ μΈ ν΅μ μ΄μ£ .
AWSμμλ μ΄λ₯Ό μν΄ SQS, SNS, KinesisλΌλ μΈ κ°μ§ κ°λ ₯ν λ©μμ§ μλΉμ€λ₯Ό μ 곡ν©λλ€.
μ΄ κΈμμλ μΈ κ°μ§ μλΉμ€λ₯Ό νλμ© λ―μ΄λ³΄λ©°, μΈμ , μ, μ΄λ»κ² μ¬μ©νλμ§ μμΈν μ΄ν΄λ³΄κ² μ΅λλ€.
π λ¨Όμ , μ λ©μμ§ μλΉμ€κ° νμν κΉμ?
π μλΉμ€ κ° ν΅μ λ°©μ
- λκΈ°(Synchronous): νμͺ½μ΄ μμ²μ 보λ΄κ³ , μλ΅μ κΈ°λ€λ¦¬λ ꡬ쑰
→ μ: μΉ μλ²κ° DBμ μ§μ μμ²νκ³ μλ΅λ°κΈ° - λΉλκΈ°(Asynchronous): μμ²μ ν(queue)μ λ£κ³ , λμ€μ μ²λ¦¬λλ ꡬ쑰
→ μ: μ¬μ©μκ° μ£Όλ¬Έ λ²νΌμ λλ₯΄λ©΄, μ£Όλ¬Έ λ΄μ©μ νμ μμ΄κ³ λ°±μλκ° μ²μ²ν μ²λ¦¬
π μ λΉλκΈ° λ©μμ§μ΄ νμν κΉ?
- νΈλν½μ΄ κ°μκΈ° νμ¦νλ©΄ λκΈ° ꡬ쑰λ λ³λͺ©μ΄ μκΉ
- μ: λ³΄ν΅ 10κ° μμλ§ μ²λ¦¬νλ μλΉμ€κ° μ΄λ λ 1000κ°λ₯Ό μ²λ¦¬ν΄μΌ νλ€λ©΄?
- μ΄λ΄ λλ SQS/SNS/Kinesisλ₯Ό ν΅ν΄ κ° μλΉμ€λ₯Ό λ 립μ μΌλ‘ νμ₯ κ°λ₯
π¨ Amazon SQS – ν κΈ°λ° λ©μμ§ μλΉμ€
SQS(Simple Queue Service)λ κ°μ₯ μ€λλ AWS λ©μμ§ μλΉμ€μ λλ€.
β ν΅μ¬ κΈ°λ₯
- Producer → Queue → Consumer ꡬ쑰
- λ©μμ§λ μ΅λ 14μΌκ° 보κ΄
- μλΉμκ° λ©μμ§λ₯Ό λ°μ μ²λ¦¬ ν μμ (DeleteMessage API)
- νμ€(Standard) ν: μ€λ³΅ νμ©, μμ 보μ₯ μμ
- FIFO ν: μμ 보μ₯, μ€λ³΅ μ κ±° κΈ°λ₯ μ 곡
β μ€μ μμ
- μΉ νλ‘ νΈμμ μ£Όλ¬Έ μμ² → SQS ν → λ°±μλμμ μμ°¨μ μΌλ‘ μ²λ¦¬
- EC2 Auto Scaling κ·Έλ£Ήκ³Ό μ°λνμ¬ μ²λ¦¬λ μ¦κ°μ λ°λΌ μλΉμ μ μλ νμ₯
π 보μ
- HTTPS κΈ°λ° μ μ‘ μνΈν, KMSλ₯Ό ν΅ν μ μ₯ μνΈν
- IAM λ° SQS Access Policyλ‘ μ κ·Ό μ μ΄
β³ λ©μμ§ κ°μμ± νμμμ
- λ©μμ§λ₯Ό κ°μ Έμ€λ©΄ μΌμ μκ° λμ λ€λ₯Έ μλΉμμκ² μ 보μ (κΈ°λ³Έ 30μ΄)
- μκ° λ΄μ μ²λ¦¬ μ λλ©΄ λ€μ 보μ΄λ―λ‘ μ€λ³΅ μ²λ¦¬ κ°λ₯μ± μ‘΄μ¬
β Long Polling
- λ©μμ§κ° μμ λ, μ§μ ν μκ°(μ΅λ 20μ΄)λ§νΌ κΈ°λ€λ Έλ€κ° μλ΅
- API νΈμΆ μ μ€μ΄κ³ ν¨μ¨μ± μ¦κ°
π£ Amazon SNS – νΌλΈλ¦¬μ/μλΈμ€ν¬λΌμ΄λΈ λ°©μ
SNS(Simple Notification Service)λ μ΄λ²€νΈ κΈ°λ°μΌλ‘ λ€μμκ² λμμ λ©μμ§λ₯Ό μ λ¬ν©λλ€.
β ν΅μ¬ κΈ°λ₯
- ν λ©μμ§λ₯Ό μ¬λ¬ ꡬλ μμκ² λμμ μ μ‘
- SQS, Lambda, Email, SMS, HTTP λ± λ€μν νμ μ μμ μ μ°κ²° κ°λ₯
- λ©μμ§ νν°λ§ κΈ°λ₯μΌλ‘ νΉμ 쑰건μ λ§λ ꡬλ μλ§ μμ κ°λ₯
β μ€μ μμ
- μ£Όλ¬Έ λ°μ → SNSλ‘ μ΄λ²€νΈ λ°ν → λ°°μ‘, κ²°μ , μ΄λ©μΌ μλ¦Ό λ± κ°κ° μμ
π 보μ
- HTTPS μνΈν, KMS μ μ₯ μνΈν
- IAM, SNS Access Policyλ‘ μ κ·Ό μ μ΄
π SNS + SQS ꡬ쑰 (Fan-out)
- νλμ SNS ν ν½μμ μ¬λ¬ SQS νλ‘ λ©μμ§λ₯Ό λΆμ°
- μλΉμ€ κ° μμ ν λΆλ¦¬ κ°λ₯ (λ컀νλ§ κ΅¬μ‘°)
π§ SNS FIFO ν ν½
- λ©μμ§ μμ 보μ₯ λ° μ€λ³΅ μ κ±° κΈ°λ₯
- SQS FIFO νμ ν¨κ» μ¬μ©νλ©΄ μμ + μ¬μλ + λ€μ μμ μ ꡬ쑰 μμ±
β‘ Amazon Kinesis – μ€μκ° λ°μ΄ν° μ€νΈλ¦¬λ°μ ν΅μ¬
Amazon Kinesisλ μ€μκ° λ°μ΄ν° μ€νΈλ¦¬λ°μ μν μλΉμ€λ‘, λκ·λͺ¨μ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μμ§, μ²λ¦¬, λΆμν μ μκ² λμμ€λλ€. Kinesisλ μ€μκ° λΆμμ΄ νμν μν©μμ κ°λ ₯ν λꡬλ‘, μλ₯Ό λ€μ΄ IoT μΌμ λ°μ΄ν°, μΉ ν΄λ¦ μ€νΈλ¦Ό, λ‘κ·Έ λΆμ λ±μ λ°μ΄ν° νλ¦μ μ²λ¦¬ν λ μ¬μ©λ©λλ€.
β Kinesisμ μ£Όμ μλΉμ€ κ΅¬μ± μμ
- Kinesis Data Streams
- λ°μ΄ν° μ€νΈλ¦Όμ μμ±νμ¬ μ€μκ° λ°μ΄ν°λ₯Ό μμ§νκ³ μ²λ¦¬νλ κΈ°λ³Έ κ΅¬μ± μμμ λλ€.
- λ°μ΄ν°λ₯Ό shard λ¨μλ‘ λλμ΄ μ μ₯νκ³ μ²λ¦¬ν©λλ€.
- 1 μ€λλ μ΄λΉ 1MBμ μ λ ₯κ³Ό 2MBμ μΆλ ₯μ μ²λ¦¬ν μ μμ΅λλ€.
- **νλ‘λμ(Producer)**λ λ°μ΄ν°λ₯Ό μ€νΈλ¦ΌμΌλ‘ 보λ λλ€. μλ₯Ό λ€μ΄ μΉμ¬μ΄νΈμμ λ°μνλ ν΄λ¦ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μ€νΈλ¦Όμ κΈ°λ‘ν μ μμ΅λλ€.
- **컨μλ¨Έ(Consumer)**λ μ€νΈλ¦Όμμ λ°μ΄ν°λ₯Ό μ½κ³ μ²λ¦¬ν©λλ€. μλ₯Ό λ€μ΄, Lambdaλ EC2 μΈμ€ν΄μ€λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ λΆμνκ±°λ μ μ₯ν μ μμ΅λλ€.
- μ¬μ²λ¦¬ κ°λ₯ (Replay): λ°μ΄ν°λ μ΅λ 365μΌ λμ μ μ₯λλ©°, μλΉμλ νμμ κ³Όκ±° λ°μ΄ν°λ₯Ό μ¬μ²λ¦¬ν μ μμ΅λλ€.
- Kinesis Data Firehose
- μμ κ΄λ¦¬ν μ€νΈλ¦¬λ° μλΉμ€λ‘, μ€μκ° λ°μ΄ν° μ€νΈλ¦Όμ S3, Redshift, OpenSearch λ±μΌλ‘ μλμΌλ‘ μ μ‘ν©λλ€.
- λ²νΌλ§ κΈ°λ₯μ ν΅ν΄ λ°μ΄ν°λ₯Ό μΌμ μκ° λλ ν¬κΈ°λ§νΌ λͺ¨μ λ€ μΌκ΄ μ²λ¦¬ν μ μμ΄ μ§μ° μκ°μ΄ μ€μν μν©μμ μ μ©ν©λλ€.
- λ°μ΄ν°κ° μ μ‘λκΈ° μ μ AWS Lambdaλ₯Ό μ΄μ©ν΄ λ°μ΄ν° λ³νλ κ°λ₯ν©λλ€. μλ₯Ό λ€μ΄, CSV νμΌμ JSON νμμΌλ‘ λ³ν ν μ μ₯ν μ μμ΅λλ€.
- Kinesis Data Analytics (Flink κΈ°λ°)
- μ€μκ°μΌλ‘ μ€νΈλ¦¬λ° λ°μ΄ν°λ₯Ό SQL κΈ°λ°μΌλ‘ λΆμν μ μλ μλΉμ€μ λλ€.
- λ°μ΄ν°λ₯Ό μμ§ν λ€, μ€μκ°μΌλ‘ λΆμνκ³ κ²°κ³Όλ₯Ό λ€λ₯Έ μμ€ν μΌλ‘ μ μ‘ν μ μμ΅λλ€.
- Apache Flinkλ₯Ό κΈ°λ°μΌλ‘ νμ¬ κ³ κΈ μ€μκ° λΆμμ κ°λ₯νκ² ν©λλ€.
β Kinesisμ νΉμ§κ³Ό μ₯μ
- μ€μκ° μ²λ¦¬
- Kinesisλ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μ€νΈλ¦¬λ°νμ¬ μ¦μ λΆμν μ μμ΅λλ€. μ΄λ λκ·λͺ¨ λ°μ΄ν° νκ²½μμ μ€μν μμμ λλ€.
- μλ₯Ό λ€μ΄ μ€μκ° κ΄κ³ ν΄λ¦ λΆμ, νΈλμμ λΆμ, IoT μΌμ λ°μ΄ν° λͺ¨λν°λ§ λ± λΉ λ₯Έ λ°μ΄ν° μ²λ¦¬κ° νμν λͺ¨λ λΆμΌμμ νμ© κ°λ₯ν©λλ€.
- μλ νμ₯
- Provisioned modeμμ shard μλ₯Ό μλμΌλ‘ μ€μ νκ±°λ, On-demand modeμμλ μλμΌλ‘ νμ₯λμ΄, μ¬μ©μλ λ°μ΄ν° νΈλν½μ λ§κ² μ μ°νκ² λμν μ μμ΅λλ€.
- μ¨λ맨λ λͺ¨λλ μλμΌλ‘ νμ₯λλ―λ‘ κ΄λ¦¬μκ° μ§μ μ€λλ₯Ό μΆκ°/μ κ±°ν νμκ° μμ΅λλ€.
- λ΄κ΅¬μ±
- Kinesis Data Streamsλ λ°μ΄ν°λ₯Ό μ΅λ 365μΌ λμ μ μ₯ν μ μκ³ , λ°μ΄ν° μμ€ μμ΄ **λ€μ μ²λ¦¬(replay)**ν μ μμ΅λλ€.
- Kinesis Data Firehoseλ κΈ°λ³Έμ μΌλ‘ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μ μ‘νλ©° λ°°μΉ μ²λ¦¬λ μ§μνμ¬ λ°μ΄ν° μμ€ μμ΄ μμ μ μΈ μ μ‘μ 보μ₯ν©λλ€.
- νμ₯μ±
- Kinesisλ λλμ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ νμ₯ κ°λ₯ν μν€ν μ²λ₯Ό μ 곡ν©λλ€. λ°μ΄ν° νλ¦μ΄ μ¦κ°νλ©΄ μ€λλ₯Ό μΆκ°νμ¬ μ±λ₯μ νμ₯ν μ μμ΅λλ€.
- λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬
- Clickstream λ°μ΄ν°, λ‘κ·Έ λΆμ, IoT μΌμ λ°μ΄ν°μ κ°μ΄ λλμ μμ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μ²λ¦¬ν μ μμ΅λλ€.
β Kinesis λ°μ΄ν° μ€νΈλ¦¬λ° νμ© μμ
- μΉμ¬μ΄νΈ ν΄λ¦ μ€νΈλ¦Ό λΆμ
- Kinesisλ₯Ό μ¬μ©ν΄ μΉμ¬μ΄νΈμμ λ°μνλ μ¬μ©μ ν΄λ¦ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μμ§νκ³ , μ€μκ° λΆμμ ν΅ν΄ μ¬μ©μμ νλμ μΆμ νκ±°λ, λ§μΆ€ν κ΄κ³ λ₯Ό μ 곡ν μ μμ΅λλ€.
- IoT λ°μ΄ν° μμ§ λ° λΆμ
- μμ² κ°μ IoT μ₯μΉμμ λ°μνλ λ°μ΄ν°λ₯Ό Kinesisλ‘ μ€μκ° μμ§νμ¬ μλ²λ‘ μ μ‘νκ³ , μ΄λ₯Ό μ¦μ λΆμνμ¬ μ₯λΉμ μ΄μ μνλ₯Ό λͺ¨λν°λ§νκ±°λ κ²½κ³ λ₯Ό λ³΄λΌ μ μμ΅λλ€.
- λ‘κ·Έ λΆμ
- μλ²μμ λ°μνλ λ‘κ·Έ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ Kinesisλ‘ μ€νΈλ¦¬λ°νμ¬, λ‘κ·Έλ₯Ό μ¦μ λΆμνκ³ , μλ¬λ₯Ό μ€μκ°μΌλ‘ νμ§ν μ μμ΅λλ€.
- μ€μκ° κΈμ΅ λ°μ΄ν° μ²λ¦¬
- μ£Όμ κ±°λ λ°μ΄ν°λ κΈμ΅ κ±°λ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μ€νΈλ¦¬λ°νμ¬ κ°κ²© λ³νλ μμ₯ λ³λμ±μ λΆμνκ³ μ€μκ° λμν μ μμ΅λλ€.
π Kinesis vs Firehose
κΈ°λ₯ | Data Streams | Data Firehose |
μ²λ¦¬ λ°©μ | μ§μ μμ± (μ€μκ°) | μμ κ΄λ¦¬ν (λ²νΌ ν μ μ‘) |
λ°μ΄ν° μ μ₯ | μ΅λ 365μΌ μ μ₯ κ°λ₯ | μ μ₯ μ λ¨ |
μ¬μ²λ¦¬ κ°λ₯ | κ°λ₯ | λΆκ° |
λͺ©μ μ§ | S3, Redshift, OpenSearch λ± | S3, Redshift, 3rd-party λ± |
π§Ύ μ 리: SQS, SNS, Kinesis μ°¨μ΄ νλμ 보기
νλͺ© | SQS | SNS | Kinesis |
ꡬ쑰 | Queue (Pull) | Pub/Sub (Push) | Streaming (Push/Pull νΌν©) |
μ μ₯ | μ΅λ 14μΌ | μ μ₯ μ λ¨ | μ΅λ 365μΌ μ μ₯ |
μμ | FIFO νμμλ§ λ³΄μ₯ | FIFO ν ν½μμλ§ λ³΄μ₯ | νν°μ ν€ κΈ°μ€ μμ 보μ₯ |
μ€λ³΅ | μΌλΆ νμ© | 보μ₯ μ λ¨ | Deduplication κ°λ₯ |
λμ | λ¨μΌ μλΉμ | λ€μ ꡬλ μ | μ€νΈλ¦¬λ° λΆμ λ° ETL |
νμ₯μ± | 무ν μλΉμ νμ₯ | μ΅λ 1,250λ§ κ΅¬λ μ | μ€λ κΈ°λ° νμ₯ / μ¨λ맨λ νμ₯ |
β λ§λ¬΄λ¦¬
- SQSλ μμ²μ΄ λ§μλ μμ°¨μ μΌλ‘ μμ μ μΌλ‘ μ²λ¦¬νκ³ μΆμ λ
- SNSλ νλμ μ΄λ²€νΈλ‘ μ¬λ¬ κ³³μ μλ¦Όμ 보λ΄μΌ ν λ
- Kinesisλ λλμ μ€μκ° λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μμ§νκ³ λΆμν λ