๐จโ๐ป Sr. Data Engineer
7๋
์ฐจ Data Engineer ๋ก์ Daily Events Count 2,000๋ง๊ฑด์ Spark Streaming, Batch Size
1,000๋ง๊ฑด์ Spark Batch ์ Elastic Search๋ฅผ ์ด์ฉํ ์๋น์ค ๋ฑ ์ฌ๋ฌ ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฐ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์
๊ตฌ์ถํ ๊ฒฝํ์ด ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ณผ๋ฅจ์ด ์ฆ๊ฐํ์ ๋ processing delay ๋ฐ ๋ถ์ฐ์ฒ๋ฆฌ ์์คํ
์์์ ๋์์ฑ ์ด์ ๋ฑ
์ฌ๋ฌ incident๋ฅผ ๊ฒฝํํ๋ฉด์ ์คํธ๋ฆฌ๋ฐ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์งํํ์๊ณ
๊ทธ ๊ฒฐ๊ณผ, ๊ธฐ์กด ๋๋น 10๋ฐฐ ์ด์์ ์ฑ๋ฅ ํฅ์ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฐ์ดํฐ ์์ง๋์ด๋ก์ ๊ธฐ์ ์ ์ธ ์ญ๋ ๋ฟ๋ง ์๋๋ผ ํ์
์ด ํ๋ก์ ํธ์ ์ฑํจ๋ฅผ
์ข์ฐํ๋ค๊ณ ๋ฏฟ๊ณ ์์ต๋๋ค.
์ ๋ ์ฃผ์ด์ง ์ผ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ ๋ ๋ฌธ์ ๋ฅผ ๊ณต์ ํ๊ณ ,
ํ์
์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์์์ด ๋
ธ๋ ฅํ๊ธฐ ๋๋ฌธ์
์๋ก์ด ์ผ์ ๋ํด ๋๋ ค์ ์์ด ์ฑ๊ณต์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ ์ ์์ต๋๋ค.
๐ช Skills
Backend
- Java, Kotlin, Scala, Python
- Spring Boot/MVC
- JPA, Querydsl
- Junit4/5, Mockito, Spock, Kotest, ScalaTest
- Gradle, Maven
DevOps
- DocumentDB(MongoDB), Aurora(Mysql)
- Jenkins, CircleCI, Airflow, Airbyte
- Elastic Cache (Redis), S3, EC2, Cloud Watch
- Nginx, Tomcat
- Spark Streaming/Batch, Structured Streaming
- AWS Event Bridge, Kinesis, Kafka
- Hive, Trino(Presto), Iceberg
- Elastic Search, Kibana
- Grafana, Graylog, Prometheus, nGrinder
- Git/Github
Frontend
- React, Redux
- Typescript, Javascript
Collaboration
- Jira / Wiki Confluence
- Slack
๐ผ Work Experience
2021.02.01 ~ ํ์ฌ
[Spark Batch ์ Apache Iceberg ํ
์ด๋ธ์ ์ด์ฉํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ]
- ๊ธฐ์กด hive ํ
์ด๋ธ์ iceberg ํ
์ด๋ธ๋ก ์ ํ
- hive ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ค๊ฐ ํ
์ด๋ธ์ด
์๊ฒจ ๋ฆฌ๋ ํ์ ๋ฐ ํ์ดํ๋ผ์ธ ๋ณต์ก์ฑ ์ฆ๊ฐ
- iceberg ํ
์ด๋ธ๋ก ์ ํํ์ฌ ํธ๋์ญ์
์ ๊ณต ๋ฐ ํ
์ด๋ธ ๊ฐ์ํ
- ์ ์ฐํ ์คํค๋ง ๋ณ๊ฒฝ
- spark๋ฅผ ํ์ฉํ ํจ์จ์ ์ธ join ์ ๋ต
- ์์
์ ์ด์ฉํ ๋ฉ๋ด์ผ ์์
์ ์์คํ
์๋ํํ์ฌ 97% ๋ฆฌ๋ํ์ ๋จ์ถ
- AS-IS: 8 hour (์ฝ 100๋ง๊ฑด ๊ธฐ์ค)
- TO-BE: 10 min
[Daily Events Count 2,000๋ง๊ฑด์ Spark Structured Streaming]
- Processed rows per second(AS-IS: 800 -> TO-BE: 10,000)
- ๋ถํ์ํ Shuffle ์ ๊ฑฐ
- ๋์์ฑ ์ด์ ๋ฐ ๋ฐ์ดํฐ ์์ ๋ถ์ผ์น ํด๊ฒฐ
- ์ฌ์ฒ๋ฆฌ ๊ตฌ์กฐ ๊ฐ์
- ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฉํธ๋ฆญ ๊ตฌ์ฑ
- Migrate from spark streaming to structured streaming.
[Batch Size 1,000๋ง๊ฑด์ Spark Batch ์ Elastic Search, Airflow๋ฅผ ์ด์ฉํ ๊ฒ์ ์๋น์ค]
- Daily๋ก 1,000 ๋ง๊ฑด ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฒ์ ํจํด์ผ๋ก ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก Elastic Search ์ Spark Batch Job ์ ํตํด ๊ฐ๋ฐ
- Spark๋ฅผ ์ด์ฉํ์ฌ ํ์ด๋ธ ํ
์ด๋ธ๊ฐ ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ES ์ ์ธ๋ฑ์ฑ(daily 1,000๋ง๊ฑด)
- ES ์ธ๋ฑ์ค ๊ด๋ฆฌ(Template, Alias, Lifecycle)
- ์น ์ดํ๋ฆฌ์ผ์ด์
์์ ๋ชจ๋ ๊ฒ์ ํจํด์ ๋ํด 0.5 s ์ด๋ด์ ๊ฒ์์ ์ ๊ณต
- nGrinder๋ฅผ ์ด์ฉํ ์ฑ๋ฅ ํ
์คํธ
[Bus Route Recommendation Service]
- Fulfillment Center ์ง์์์๊ฒ ๋ฒ์ค๊ฐ ์ ๊ณต๋๋ฉฐ, ์ง์์ ๊ฑฐ์ฃผ์ง ๊ธฐ์ค์ผ๋ก ์๋์ผ๋ก ๊ฐ๊น์ด ๋ฒ์ค ์ถ์ฒ
- ๊ธฐ์กด์๋ ์๋ด์ฌ๊ฐ ์ง์ ์ง์์์ ๊ฑฐ์ฃผ์ง์ ๊ฐ๊น์ด ๋ฒ์ค ์ ๋ฅ์ฅ์ ์ฐพ์์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์๋ด์๊ฐ ์ง์ฐ ๋ฐ์
- ์ง์์์ ๊ฑฐ์ฃผ์ง๋ฅผ ์, ๊ฒฝ๋๋ก ๋ณํ ํ ๋ฒ์ค ์ ๋ฅ์ฅ์ ์, ๊ฒฝ๋์ ๋น๊ตํ์ฌ ๊ฑฐ๋ฆฌ ๋ฐ ์ฐ์ ์์์ ๋ฐ๋ผ ์ถ์ฒ
- Haversine formula ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ ๊ณ์ฐ
- Redis๋ฅผ ํ์ฉํ์ฌ ๋ฒ์ค ์ ๋ฅ์ฅ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ ์ฑ๋ฅ ๊ฐ์
- ์๋ด์ฌ์ ์๋ด ์ค๋น์๊ฐ(After Call Work)์ 60% ๊ฐ์
- As-Is : 2.5 min
- To-Be : 1 min (์
ํ๋ฒ์ค๋
ธ์ ํ์ธ ์๊ฐ ๊ฐ์)
[Build customer service data pipeline with Kafka, Spark streaming and DocumentDB]
- ๊ธฐ์กด batch ๊ธฐ๋ฐ์ผ๋ก API๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ ๋ฐฉ์์์ AWS event bridge๋ฅผ ์ฌ์ฉํ์ฌ 3rd party data pipeline ๊ตฌ์ถ
- Spark Streaming์ ๋ง์ดํฌ๋ก ๋ฐฐ์น(10์ด)๋ฅผ ํตํด Data ์์ง ๋ฐ Kafka publishing ํ์ฌ ํ ๋๋ฉ์ธ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต
- API ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์ ๋๋น ์ฝ 60๋ฐฐ์ ํผํฌ๋จผ์ค ๊ฐ์
- As-Is : 250/sec
- To-Be : 15,000/sec
- API error๋ก ์ธํด ๋ฐ์ํ๋ exception 100% ๊ฐ์
- As-Is: 1000/day
- To-Be: 0/day
- Airflow๋ฅผ ํตํด 3rd party domain์ ์ฅ์ ๋ฐ์ ๋ฐ Event bridge๋ก ๋ฐ์ดํฐ ์ ๋ฌ ๋๋ฝ, ์ด๋ฒคํธ ์ฒ๋ฆฌ ์คํจ์ ๋ํ retry ํ๋ก์ธ์ค ์ ์ฉ
- Data ์ ์ฅ์ ์ํ AWS storage cost ์ ๊ฐ
- As-Is : $12,264 /Month (AuroraDB r5.12xlarge)
- To-Be : $3,901 /Month (DocumentDB r5.4xlarge)
์ผ์ฑSDSํ์ฌ ITํ์ ์ฌ์
๋ถ Software Engineer
2019.01 ~ 2021.01 (์ด 2๋
1๊ฐ์)
- SW Certificate ๊ฐ์ฌ ํ๋
- Samsung SW certificate professional ์ทจ๋
- ์๋ฐ, ์คํ๋ง ๊ธฐ๋ฐ์ Outsourcing Management System ๊ฐ๋ฐ ๋ฐ ์ด์
- ์ผ์ฑ SDS ๋ํ์ it ๋ฉํ ๋ง ๋ฐํ
https://www.youtube.com/watch?v=WW8luDK_pCk
์ธํฌ๋ฑ
ํฌ ํ์ฌ Expert System ๊ฐ๋ฐํ ์ธํด
2018.01 ~ 2018.02 (์ด 2๊ฐ์)
- ํ์ํ ๋ถ์ผ์ Drools๋ฅผ ์ด์ฉํ ์ ๋ฌธ๊ฐ ์์คํ
์ ์ตํฉ ๋ฐ ์น์๋น์ค ์ ๊ณต
- Nginx๋ฅผ ์ด์ฉํ ๋ก๋๋ฐธ๋ฐ์ฑ ๊ตฌ์กฐ ๊ตฌ์ถ ๋ฐ ์ฑ๋ฅ ๋ฒค์น๋งํน
- A Scalability Study with Nginx for Drools-Based Oriental Medical Expert System ๋
ผ๋ฌธ ๋ฐํ
https://github.com/WonYong-Jang/Medical-Expert-System
โ๐ป Personal Experience
ํจ์คํธ ์บ ํผ์ค ๊ฐ์
๐ Problem Solving Experience
Spark streaming trouble shooting
Elastic Search
๐ Prize
2018. 05 ์ถ๊ณํ์ ๋ฐํ๋ํ ์์
์ ์์ ๋ณด์ฐ๊ตฌ์ ๋ณด์ผํฐ ํ๊ตญ์ ๋ณด์ฒ๋ฆฌํํ (์ 2018-6-18 ํธ)
- Drools๋ฅผ ์ด์ฉํ Nginx์ Ajax๊ธฐ๋ฐ์ Medical Expert System ๊ฐ๋ฐ
๐ Paper
2018. 12. 07 ์ ๋ณด์ฒ๋ฆฌํํ๋
ผ๋ฌธ์ง
2018. 05. 12 ์ ๋ณด์ฒ๋ฆฌํํ
- Drools๋ฅผ ์ด์ฉํ Nginx์ Ajax๊ธฐ๋ฐ์ Medical Expert System ๊ฐ๋ฐ
2017. 11. 04 ์ ๋ณด์ฒ๋ฆฌํํ
- Drools ๊ธฐ๋ฐ์ ๋ฉ๋์ปฌ Expert ์์คํ
์ํคํ
์ฒ์ ํ๋ก์ธ์ค ์ฐ๊ตฌ
2017. 11. 04 ์ ๋ณด์ฒ๋ฆฌํํ
๐ซ Education
- 2012.03 ~ 2018.06 ๊ตญ๋ฏผ๋ํ๊ต ์ํํธ์จ์ด๊ณตํ๊ณผ ์กธ์