์ค๋น๋ ๋ค์ํ ์์ ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฝ๋ ์คํ ๋จ์ ๋ณ๋ก ์๊ฐํํด์ฃผ์ด ์ง๊ด์ ์ผ๋ก ์ดํด๋ฅผ ๋์์ฃผ๋ ์น ํ๋ซํผ์ ๋๋ค.
- ์ฝ๋ฉ์ ์ฒ์ ์ ํ๋ ์ฌ์ฉ์
- ๋์ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์์ฐจ์ ์ผ๋ก ์คํ๋๋์ง ๊ถ๊ธํดํ๋ ์ฌ์ฉ์
- Python ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ก ์ค์นํ ํ์์์ด ์น ๋ธ๋ผ์ฐ์ ์์ ์ฝ๋๋ฅผ ์คํ ์ํค๊ณ ์ถ์ ์ฌ์ฉ์
- Python๊ณผ Flask ๊ตฌ์ถํ ๋ฐฑ ์๋ ์๋ฒ๋ WebSocket์ผ๋ก ํต์ ํ๋๋ก Socket.IO๋ฅผ ์ด์ฉํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ๊ตฌํ
- Python Bdb ๋๋ฒ๊น ํด์ ์ด์ฉํ์ฌ ๋ณ์ํ์ , ๋ณ์๋ช , ํจ์ ๋ฑ๋ฑ์ ๊ฐ์ ธ์ ๋ฐ์ดํฐ ํ์ฑ
- Docker ๊ฐ์ํ๊ฒฝ์ ์ด์ฉํ์ฌ ์ฝ๋๋ฅผ ์คํ - SandBoxing ๊ตฌํ
- AWS EC2 ์ธ์คํด์ค์ ์๋ฒ๋ฅผ ๋ฐฐํฌ
- AWS ELB (๋ก๋๋ฐธ๋ฐ์) + AWS ROUTE 53์ ์ฌ์ฉํ์ฌ Scale-Out ํจ๊ณผ์ DNS ๊ด๋ฆฌ ๊ธฐ๋ฅ ๊ตฌํ
- ์๋ฒ์์ ํ์ฑํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ GoJS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์๊ฐํ ๊ตฌํ
- CodeMirror ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์์ ์ฝ๋ ์์ฑ, ์์ ๋ฐ ์ฝ๋ ์ ์ถ ๊ฐ๋ฅ
- ์ฌ์ฉ์์๊ฒ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ์ด์ฉํ ์ ์๋๋ก View ๊ตฌํ
- Python ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์ด ์ฝ๋ ์คํ ๋จ์๋ณ ์๊ฐํ ๊ธฐ๋ฅ
- ์ฌ์ฉ์๊ฐ ์ฝ๋๋ฅผ ์ง์ ์์ฑ ํ ์คํ์์ผ ์ค์๊ฐ ์๊ฐํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- ์ฝ๋๋ฅผ ์ปดํ์ผํด ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ
- Pdb ๋๋ฒ๊น ํด์ ์ด์ฉํ ๋๋ฒ๊น ๊ธฐ๋ฅ ์ ๊ณต
- ๊ฐ๋ฐํ๊ฒฝ ์ค์ ํ์ ์์ด ์น ๋ธ๋ผ์ฐ์ ์์ ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์๋ ํ๋ซํผ์ ์ ๊ณต
Docker
์ค์น./docker/Dockerfile
์ ๊ฐ์ง๊ณoct-container
๋ผ๋ ์ด๋ฏธ์ง ์์ฑ- COMMAND :
docker build --tag oct-container .
- COMMAND :
docker-py
๋ชจ๋ ์ค์นeventlet
๋ชจ๋ ์ค์นpython2 ./server.py
์คํ
- Python 2.7 ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋ ์๊ฐํ
- ๋ ธ๋ ํด๋ฆญ์ ํด๋น ๋ ธ๋๊ฐ Pointing ํ๋ ๋ชจ๋ ๋ ธ๋๋ค์ ํ์ด๋ผ์ดํธ ํด์ฃผ๋ ๊ธฐ๋ฅ
๋ ธ๋๊ฐ ์ด๋ค ๋ ธ๋๋ค์ ๊ฐ๋ฅดํค๋์ง ํ์ธ ๊ฐ๋ฅ
- ๋ง์ฐ์ค ํด๋ฆญ ํ ๋๋๊ทธํด์ Diagram ์ด๋ ๊ฐ๋ฅ
- ์งํ ์ํฉ์ ์ฒ์, ์ด์ , ๋ค์, ๋ง์ง๋ง ๋จ๊ณ๋ฅผ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ ์ ๊ณต
- Python2.7, Python3.6 ๋ฒ์ ์ง์
- Docker ๊ฐ์ ํ๊ฒฝ์์ ์ฝ๋ ์ปดํ์ผ & ์คํ (SandBoxing)
- ๋ชจ๋ Import ๊ธฐ๋ฅ ์ ๊ณต (Python2,3 ๊ธฐ๋ณธ ๋ชจ๋ - re, random, math ๋ฑ๋ฑ )
- ์ํ๋ ์ฝ๋๋ฅผ ์คํํด ๊ฒฐ๊ณผ ํ์ธ ๊ฐ๋ฅ
- Python2.7, Python3.6 ๋ฒ์ ์ง์
- ๋ชจ๋ Import ๊ธฐ๋ฅ ์ ํ (os, sys, subprocess, ...)
- Pdb ๋๋ฒ๊น
ํด์ ์ด์ฉํ ๋๋ฒ๊น
๊ฐ๋ฅ (๋ช
๋ น์ด ์
๋ ฅ ๋ฐฉ์)
Pdb reference
2.7 ๋ฒ์ : https://docs.python.org/ko/2.7/library/pdb.html
3.6 ๋ฒ์ : https://docs.python.org/ko/3.6/library/pdb.html
- Version : Ubuntu 18.04.3 LTS
- CPU Model : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
- Memory : 1GB
- Python2.7, Python3.6 ๋น๋
- CPU Limit - CPU ์์ ์ ํ ํฌ๊ธฐ (Default : CPU 1๊ฐ ํ ๋น)
- Memory Limit - ๋ฉ๋ชจ๋ฆฌ ์ ํ ํฌ๊ธฐ (Default : 64๋ฉ๊ฐ)
- IO Access Limit : READ_ONLY (์ฝ๊ธฐ๋ง ๊ฐ๋ฅ)
- class, range, closur, decorator(@), unpack(*)
์ง์ํ์ง ์์ต๋๋ค
- ์ฝ๋ ๋จ๊ณ๋ 250 ๋จ๊ณ ์ ํ
250 ๋จ๊ณ๋ฅผ ๋์ด์๋ ์ฝ๋๋ ์คํ ์ ํ
- global string ๊ธธ์ด ์ ํ
- object string ๊ธธ์ด ์ ํ
- ํด๋น ์๋ฌ๋ ๋ค์ฌ์ฐ๊ธฐ ์๋ฌ์ ํด๋น๋ฉ๋๋ค.
- python style guid(pep8)์์๋ ๋ค์ฌ์ฐ๊ธฐ = 4 spaces ๋ก ๊ท์ ํด๋์์ผ๋ ์ด๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
Email : [email protected] ์ผ๋ก ์ฐ๋ฝ์ฃผ์ธ์.