μ¬μ€ λ무 λΉμ°νκ±΄λ° μ μ¨λμΌλ©΄ κΉλ¨ΉμΌλκΉ.
Serverless + Python κ΄ν΄μ
- νλ‘μ νΈλ³λ‘ virtualenvλ₯Ό λ§λ€μ΄μ μμνλ€. λμ€μ requirements.txtλ₯Ό λ§λ€μ΄μΌ μμ‘΄μ±μ ν¨ν€μ§ν μ μλλ°, μλ μ°λ νκ²½μμλ μ¨κ° λΌμ΄λΈλ¬λ¦¬κ° λ€ κΉλ €μμν
λ
pip freeze > requirements.txt
λ‘ νμΌμ μμ±ν μκ° μλ€.
sls invoke local
μ μ΅λν μ¨λ¨Ήμ΄μ μ μ΄λ λ‘μ§ μ체μ μ€λ₯ λλ¬Έμ deployλ₯Ό λ€μ ν μΌμ μκ² λ§λ λ€.
- 곡μ κ°μ΄λμμλ μ λ ν
μ€ν
μ μΈμ΄λ³ ν
μ€ν
νλ μμν¬λ₯Ό νμ©νκ³ , μΈν
κ·Έλ μ΄μ
ν
μ€ν
μ©μΌλ‘ invokeλ₯Ό μ¬μ©νλΌκ³ λμμλ€.
- μ¬μ©νλ λΌμ΄λΈλ¬λ¦¬κ° Cμμ‘΄μ±μ΄ μλ€λ©΄, serverless-python-requirements ν¨ν€μ§μ dockerizePip μ΅μ
μ κΌ μΌμ€λ€.
- μ΄λ²μ ν¬λ‘€λ§μ ν λλ lxml ν¨ν€μ§κ° κ·Έλ¬λλ° μ κ±Έ λͺ¨λ₯΄κ³ μ½κ°μ μ½μ§μ κ±°μ³€λ€.
- requests-html μ§μ§ λ무 νΈνλ€.
bs4
λ μ΄μ μλ
.
ν¬λ‘€λ§ + λλ€μ κ΄ν΄μ
- λ³λλ‘ λμμ± μ΅μ
μ μ§μ ν΄μ£Όμ§ μμΌλ©΄ κΈμ λμμ 1000κ°μ λλ€ μ»¨ν
μ΄λκ° ν΄λΉ μ¬μ΄νΈλ₯Ό ν¬λ‘€νκ² λλλ°, κ·Έλ¬λ€λ³΄λ©΄ μ¬μ΄νΈκ° λ§λΉλμ΄ ν¬λ‘€μ μ€ν¨νκ³ , λλ€ ν¨μλ timeout λμ λλκ³ , ν¨μλ μ€λ μ€νλμμΌλ μκΈμ λ§μ΄ μ²κ΅¬λλ μμν κ²½μ°κ° μκΈ΄λ€. κΌ μ μ ν μ«μμ λμμ±μ μ€μ ν΄μ£Όμ.
- Invoke Async vs Synchronous
- Async λ°©μμΌλ‘ ν¨μλ₯Ό μ€ννλ©΄ μ μ΄λ λ©νμμμ νμ΄μ¬ μ½λκ° λ°νλ₯μ΄ λμ§λ μλλ° λμ κ²°κ³Όλ₯Ό SQS, S3, DynamoDB λ±μ μ μ₯μ ν΄μΌνλ€. κ²°κ³ΌκΉμ§ λλ € λ°λ μμΌλ‘ Synchronous Invokeλ₯Ό λ°μΌλ©΄ μ¬λ¬ κ°μ λλ€ μ»¨ν
μ΄λλ‘λΆν° κ²°κ³Όλ₯Ό λ°λ λΆλΆμ΄ λ°νλ₯μ΄ λ μ μλ λμ (κ·Έλλ λ‘컬 CPUμ μ°λ λλ₯Ό νμ©νλκ±° 보λ€λ ν¨μ¬ λμμ μ€νν μ μλ μμ
μ κ°μκ° λ§λ€) νμμ νλλλ‘ λ‘컬μμ λ°μ΄ν° μ μ²λ¦¬λ₯Ό λ§μ ν μ μλ€. μκ°μ΄ μ€λ 걸리λ λΆλΆλ§ λλ€λ‘ μ§λ κ²λ λ°©λ²μ΄λ€.
- μμ΄ μ§μ§ λ§μ κ²½μ° λλ€ μ¬λ¬κ°λ‘ μ μ²λ¦¬λ₯Ό νκ³ Kinesisμ λ£μ΄μ μ΅μ’
μ μΌλ‘λ S3μ μ°κΈ° νΈν κ²°κ³Όλ¬Όμ΄ μ μ₯λλ κ²μ΄ μ΄μμ μ΄κ² λ€. λ‘컬 <-> AWS μ¬μ΄μ λ°μ΄ν°κ° μ€κ°λ©΄ λΉμ©κ³Ό μκ°μ΄ λ§μ΄ λ€ν
λκΉ.
- μ΄μ¨λ Failνλ μΌμ΄μ€κ° μκΈ°λλ°, Asyncλ‘ Invokeν κ²½μ° μ΄λ° μ€ν¨ν νμ€ν¬λ€μ μ΄λ»κ² μ²λ¦¬ν΄μΌνλμ§ μμ§ λ§μ λλ λ°©λ²μ λͺ»μ°Ύκ² λ€. λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°λ κ²μ΄ λ΅μΌκΉ.