์๋ ํ์ธ์. ๋ฐ์ดํฐ ๋ฐ ํด๋ผ์ฐ๋ ์ธํ๋ผ ์์ง๋์ด๋ก ์ผ ํ๊ณ ์์ต๋๋ค. ๋ ์์ธํ ์ด๋ ฅ์ Linkedin ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋๊ธฐ์
, 20๋ช
์ดํ์ ์คํํธ์
, ์ ๋์ฝ๊ณผ ๊ฐ์ด ๋ค์ํ ๊ท๋ชจ์ ํ์ฌ์์ ์๋์ ๊ฐ์ ๋
ธ๋๊ณผ ๊ฒฝํ์ ์์ ์์ต๋๋ค.
๋ช๋
์ ๋ถํฐ๋ ๋จน๊ณ ์ฌ๋๋ผ (..) ๋ฐ๋น ์ ๋ธ๋ก๊ทธ์ ๊ธ ์ธ ์๊ฐ์ด ์์ง๋ง ์์ ๋ธ๋ก๊ทธ ๋ฅผ ํ๋ ์ด์ํ๊ณ ์์ต๋๋ค.
๊ฐ๊ฐํ ์ฌ๋ฆฌ๊ณค ํ๋ ์์ง๋์ด๋ง์ ๊ดํ ์งง์ ์๊ฐ๋ค์ ์ Facebook ์์ ๋ณด์ค ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ต๊ทผ์๋ Practical Data Pipeline ์ด๋ผ๋ Gitbook ์ ์์ฑํ๊ณ ์์ต๋๋ค. ์๋์ ์ฃผ์ ๋ค์ ์ฎ์ด ๋ฐ์ดํฐ ์ธํ๋ผ ์ธ์์ ์ฒ์ ๋ง์ฃผํ์๋ ๋ถ๋ค์ด Storage, Computing Engine, Application Infra ๋ฑ์ ์ฝ๊ฒ ์ ํ์ค ์ ์๋๋ก ์กฐ๊ธ์ด๋๋ง ๋์์ ๋๋ฆฌ๊ณ ์ถ์ต๋๋ค.
- Practical Spark
- Practical AWS Pipeline (TBD)
- Practical Kubernetes (TBD)
Speakings
์๋ ๋ด์ฉ์, ์ต๊ทผ๊น์ง ํด์จ ์ปค๋ฎค๋ํฐ ํ๋์ค ๊ณต๊ฐ๋ ํ์ฌ์์ ์งํ๋ ์ฌ๋ผ์ด๋์ ์์์ ์ผ๋ถ๋ฅผ ๋ชจ์, ์ฐธ๊ณ ํ์ค ์ ์๋๋ก ๋งํฌ๋ฅผ ๋ง๋ ๊ฒ์ ๋๋ค. ๊ณผ๊ฑฐ์ ์์ฑ๋ ๋ด์ฉ์ด๋ผ Outdated ๋์์ ์ ์์ผ๋ ๋์์ด ๋์ค์ง ๋ชฐ๋ผ ๋จ๊ฒจ ๋ก๋๋ค.
- 2021. 10 ๋จธ์ ๋ฌ๋ ์ ๋๋ฒ์ค๋ฅผ ์ฌํํ๋ ํ์นํ์ด์ปค๋ฅผ ์ํ ๋ฐ์ดํฐ ํ์ด AWS ์์์ Kubernetes ๋ฅผ ํ์ฉํ๋ ๋ฒ (Slide)
- 2019. 10 ๋ฐ์ดํฐ + ์ผ๋์ = ์ผ๋์์์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ ๋ฒ (๋ฐ์ดํฐ์ผ๋์)
- 2019. 08 ๊ถ๊ธํ ์ด์ผ๊ธฐ Y: ๊ทธ๋ค์ด AWS ์์์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ด์ํ๋ ๋ฒ (AWSKRUG ๋ฐ์ )
- 2019. 09 AWS ์์์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ Terraform ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ (ํ์์ฝํ ๋ฐ์ )
- 2019. 10 AWS EKS ์์์ JupyterHub ๋ถ์ํ๊ฒฝ ์ ๊ณตํ๊ธฐ (AWSKRUG ํธ์ฆ์จ)
Data / ML Pipeline
- ๋ฐ์ดํฐ๊ฐ ํ๋ฌ๋ค๋๋ ํ์ดํ๋ผ์ธ์ ๋ง๋ค ์ ์์ต๋๋ค. ์์ง๊ณผ ์ ์ฅ์ ๋์ด ๋ฐ์ดํฐ๋ฅผ ์๋น์ค์ ๋ด๋ณด๋ด๊ธฐ ์ํ ์์คํ ์ AWS ์ ๋ค์ํ ์๋น์ค๋ฅผ ์ด์ฉํด ํ์ฌ ๊ท๋ชจ์ ๋ง์ถ์ด ๋น์ฉ ํจ์จ์ ์ผ๋ก ๊ตฌ์ถํ ์ ์์ต๋๋ค
- ๋ก๊ทธ ํฌ๋งท์ ์ค๊ณ / ์ฌ์ฉ / ๊ด๋ฆฌํด์จ ์๋ ๊ฐ์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋ก๊ทธ ๋ฐ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๊ณํด ์ถํ ์์คํ ์ ๊ท๋ชจ๋ ๋น์ฉ์ ์ํด ๋ฌธ์ ๊ฐ ๋ ์์ง๋ฅผ ๋ฏธ๋ฆฌ ์ ๊ฑฐํ ์ ์์ต๋๋ค
- ๋ฐ์ดํฐ๋ฅผ ์ฌ๋์ด ์ฌ์ฉํ๊ธฐ (SQL, ML) ์ํ ๊ฐ์ข ์์คํ ๋ค์ ๋น ๋ฅด๊ฒ ์ค์นํ๊ณ ๊ท๋ชจ์ ๋ฐ๋ผ ์ด์ํ ์ ์์ผ๋ฉฐ ๋น์ฆ๋์ค / MKT ๋ฑ ๋ค์ํ ์กฐ์ง์ ์ฌ๋๋ค์ด ํธ๋ฆฌํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๋นํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋๊ตฌ๋ฟ๋ง ์๋๋ผ ๋น์ฆ๋์ค์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๊ฐ๊ณตํด ์ต์ข ๊ณ ๊ฐ๊น์ง ์ ๋ฌํ๋ ์์ค๊น์ง ๊ด์ฌํด, ์์ ๋ฐ ๋น์ฆ๋์ค ํ์ฅ์ ๊ธฐ์ฌํด ์ค๊ณ ์์ต๋๋ค
- ๊ธฐ๊ณํ์ต ๋ฑ์ ์ํ ML ์ธํ๋ผ๋ฅผ ํ ๋ด ์ฌ์ฉ์์ ์คํฌ์ ๊ณผ ๋น์ฉ์ ๊ณ ๋ คํด ์ ์ ํ ์์ค์์ ๊ตฌ์ฑํ๊ณ ์ด์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ธ์ ํ์ต๊ณผ ํ๋์ ํธ๋ฆฌํ๊ฒ ์งํํ ์ ์๋ JupyterHub, MLFlow, Viewer ์ ๊ฐ์ ๋๊ตฌ์ Spark / Dask ๊ฐ์ ๋ค์ํ ํ๋ ์์ํฌ๋ฅผ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก Kubernetes ์์์ ์ ๊ณตํด ๋ฆฌ์์ค ํ๋ ฅ์ ์ผ๋ก ์ด์ํด์จ ๊ฒฝํ์ด ์์ต๋๋ค. ๋ํ ML ์์ง๋์ด๊ฐ ๋ ธํธ๋ถ์ ์ฝ๊ฒ ์ค์ผ์ฅด๋งํ๊ณ ๋ง๋ค์ด์ง ๋ชจ๋ธ์ ์๋นํ ์ ์๋๋ก Airflow, BentoML ๋ฑ์ ๋๊ตฌ๋ ๋ฌผ๋ก ์ปค์คํ ์ ํธ๋ฆฌํฐ ์ ์์ ํตํด ํ ๋ด ๋จธ์ ๋ฌ๋ ์์ ์ ์์ฐ์ฑ์ ๋ถ์คํ ํ ์ ์์ต๋๋ค.
- ์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ์๋น์ค์ ๋ด๋ณด๋ด๊ธฐ ์ํด Spark / Flink ๋ฑ์ผ๋ก ๊ฐ๊ณตํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ์ด์ฉํด ํต๊ณ / ์ถ์ฒ ๋ฑ ์ฌ์ฉ์๊ฐ ๋ง์ฃผํ๋ ์๋น์ค์ ๋ด๋ณด๋ธ ๊ฒฝํ์ด ์์ต๋๋ค
- EMR ๋ด Presto, Spark, Flink ๋ฑ๊ณผ ๊ฐ์ ๊ฐ์ข ์ปดํฌ๋ํธ๋ฅผ ์ํฌ๋ก๋ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ณ๋ก ๋ถ๋ฆฌํด ๋จธ์ ์ฌ์ด์ฆ ๋ฐ ํน์ฑ์ ๋ง๋ ์ต์ ์ง (...) ๊ณผ ๋น์ฉ์ ๊ฐ์ ํ ์ ์์ผ๋ฉฐ ์ด๋ก ์ธํ ๋ฉํฐ ํด๋ฌ์คํฐ ์ด์์ ์ ์ ๋ฌผ๋ฆฌ ๋ ธ๋์ผ๋ก ํด๋ผ ์ ์์ต๋๋ค. ์ด์ธ์๋ ์๋น์ค์ ํ์ํ ๊ฒฝ์ฐ AWS ์์ ์ ๊ณตํ์ง ์๋ Druid ์ ๊ฐ์ ์ปค์คํ ์คํ ๋ฆฌ์ง๋ฅผ ๋์ ํด ๋ด๋ถ ์์ง์ ์ดํดํ๊ณ ์ง์ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์๋น์ค์ ํ์ํญ ๋ฐ์ดํฐ๋ฅผ (๊ทผ) ์ค์๊ฐ์ผ๋ก ์ ๊ณตํ ๊ฒฝํ์ด ์์ต๋๋ค
Infrastructure & DevOps
- AWS Account ๋ฅผ ์ด์ ํ๋ฉฐ ์ ์ฒด ๋ฆฌ์์ค๋ฅผ Terraform ์ผ๋ก ๋น๋ฉํด ์ฎ๊ธด ๊ฒฝํ์ด ์์ผ๋ฉฐ AWS ๋ฆฌ์์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋น์ฉ๊ณผ ์ฉ๋์ ๋ง์ถ์ด Provisioning ํ๋ฉฐ Cross Account ์ด์๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค
- ์๋น์ค์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ํ์ํ AWS ๋ฆฌ์์ค๋ฅผ ๋ค์ํ๊ฒ ๊ฒฝํํด๋ณด์์ผ๋ฉฐ, Provisioning ์ดํ ํ์ํ ๋๊ตฌ๋ฅผ ์ค์น ๋ฐ ๊ด๋ฆฌํ๊ธฐ ์ํด Ansible ์ ์ด์ฉํ๊ณ ์์ผ๋ฉฐ ์ด๋ฅผ ์ด์ฉํด ๋ค์ํ ์ปค์คํ ์คํ ๋ฆฌ์ง๋ ์๋น์ค๋ฅผ ์ด์ํด ์ค๊ณ ์์ต๋๋ค
- CI/CD ๋ฅผ ์ํ ์ ์ฑ ์ ์ธ์ฐ๊ณ ํ์ํ ์์คํ ์ ์ธํ ๋ฐ ์ด์ํ ์ ์์ต๋๋ค. ๊ณผ๊ฑฐ์๋ Jenkins ๋ฅผ ์ฌ์ฉํ์๊ณ ์ต๊ทผ์๋ AWS ์์ ์ ๊ณตํ๋ CodeBuild ๋ฑ์ ์๋น์ค์ Spinanker ๋ฅผ ์กฐํฉํด ์ฌ์ฉํ๊ณ ์์ต๋๋ค
- Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ง์ (Kops) ํน์ AWS ์๋น์ค ์์์ ์ค์นํ๊ณ ์ด์ํ ์ ์์ต๋๋ค. AWS EKS ๊ฐ ๋์ ๋ ์์ ๋ถํฐ 1.13 ๋ถํฐ 1.21 ๊น์ง ์๋น์ค์ ๋๊ฐ๊ฑฐ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Self-managed / Managed ํด๋ฌ์คํฐ๋ฅผ ๋ค์๋ฅผ ๋ฌธ์ ์์ด ์ ๊ทธ๋ ์ด๋ ํด์จ ๊ฒฝํ์ด ์์ต๋๋ค.
- Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๋น์ฉ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ํฌ๋ก๋์ ๋ฐ๋ผ On-demand / Spot ๋ ธ๋๋ฅผ ๊ตฌ์ฑํ๊ณ , ํ์ํ ๋ฆฌ์์ค์ ๋ง์ถ์ด Affinity, nodeLabel ๋ฑ์ ์ ์ฑ ์ ์ธ์ฐ๊ณ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
- Backoffice / API ์ฉ๋ ๋ฟ๋ง ์๋๋ผ ์๋๋ผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ฉ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๋ณ๋๋ก ๊ตฌ์ฑํ๊ณ ์ด์ํ ๊ฒฝํ์ด ์์ต๋๋ค
- Kubernetes Cluster ์ ์ค์ผ์ผ๋ง / ๋ก๊น / ๋ชจ๋ํฐ๋ง ๋ฑ์ ํ์ํ Add-on ๋ฑ์ ์ง์ ์ค์น ๋ฐ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. (EKF, Prometheus, Grafana, Cluster Autoscaler ๋ฑ)
- ํ ๋ด ์ฌ์ฉ์์๊ฒ PromQL ๋๋ AWS Cloudwatch Search Expression ๋ฑ์ ์ฌ์ฉํด Grafana ๋์๋ณด๋๋ฅผ ๋ง๋ค์ด Kubernetes Cluster / Application (WEB, API) / AWS ๋ฆฌ์์ค์ ๋ํ ์ ๋ฐ์ ์ธ ๋ชจ๋ํฐ๋ง๊ณผ ๊ด๋ฆฌ์ฉ ๋ทฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค
Service: API & Back Office
- B2C ์๋น์ค๋ก ๋๊ฐ๋ ํต๊ณ์ฉ API ์ ๊ทธ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฐํ๊ณ ์ด์ํด์ค๊ณ ์์ต๋๋ค
- API ์๋ฒ์ Database ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด JVM ์ธ์ด ์์์ Spring ๊ณผ ๊ทธ ๊ธฐ๋ฐ ์ํ๊ณ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ (JPA ๋ฑ) ์ฃผ๋ก ์ฌ์ฉํด ์ค๋ฉฐ ์ดํด๋๋ฅผ ๋์ฌ์ค๊ณ ์์ผ๋ฉฐ, ์์ ๊ธฐ์ ๋ก ๋ง๋ค์ด์ง ์์คํ ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค
- ๋ฐ์ดํฐ ์์คํ ์ ํ์ํ Back Office ๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ํด ์์ผ๋ฉฐ ๊ฐ์ฅ ์ต๊ทผ์๋ A/B ํ ์คํ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์คํ ํ๋ซํผ ๊ด๋ฆฌ ๋๊ตฌ์ ํ๋ฉด๋ถํฐ API ๊น์ง ์ ์ํ์ต๋๋ค
- ์ธ์ ๊ฐ ๋ณธ์ธ์ B2C ์๋น์ค๋ฅผ ์ ์ํ๊ธฐ ์ํด ๋ฐ์ ํ๋ WEB ๊ธฐ์ ๋ค์ ๋ํด ํ์ตํ๊ณ ์์ผ๋ฉฐ ํด๋น ๋ด์ฉ๋ค์ ์์คํ
์ ์ ์ฉํ๋ฉด์ ๊พธ์คํ ๊ฐ์ ํด ์ค๊ณ ์์ต๋๋ค
๐