layout | title | description | background |
---|---|---|---|
page |
Resume |
/img/bg-index.jpg |
7년차 Data Engineer 로서 Daily Events Count 2,000만건의 Spark Streaming, Batch Size 1,000만건의 Spark Batch 와 Elastic Search를 이용한 서비스 등 여러 백엔드 개발 및 데이터 파이프라인을 구축한 경험이 있습니다.
데이터 볼륨이 증가했을 때 processing delay 및 분산처리 시스템에서의 동시성 이슈 등
여러 incident를 경험하면서 스트리밍 성능 최적화를 진행하였고
그 결과, 기존 대비 10배 이상의 성능 향상 경험을 가지고 있습니다.
항상 일을 진행할 때 협업과 커뮤니케이션이 프로젝트의 성패를
좌우한다고 믿고 있습니다.
저는 주어진 일에 문제가 발생하였을 때 문제를 공유하고,
협업을 통해 문제를 해결하기 위해 끊임없이 노력하기 때문에
새로운 일에 대해 두려움 없이 성공적으로 마무리할 수 있습니다.
- - -
- Java, Kotlin, Scala, Python
- Spring Boot/MVC
- JPA, Querydsl
- Junit4/5, Mockito, Spock, Kotest, ScalaTest
- Gradle, Maven
- 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
- React, Redux
- Typescript, Javascript
- Jira / Wiki Confluence
- Slack
- - -
2021.02.01 ~ 현재
[Construct data pipeline for large-scale batch processing]
- 기존 hive 테이블을 iceberg 테이블로 전환
- hive 테이블은 데이터 업데이트가 어렵기 때문에 중간 테이블이 생겨 리드 타임 및 파이프라인 복잡성 증가
- iceberg 테이블로 전환하여 트랜잭션 제공 및 테이블 간소화
- 유연한 스키마 변경
- spark를 활용한 효율적인 join 전략
- 엑셀을 이용한 메뉴얼 작업을 시스템 자동화하여 97% 리드타임 단축
- AS-IS: 8 hour (약 100만건 기준)
- TO-BE: 10 min
[Leading streaming data pipeline revamp project]
- Processed rows per second(AS-IS: 800 -> TO-BE: 10,000)
- 불필요한 Shuffle 제거
- 동시성 이슈 및 데이터 순서 불일치 해결
- 재처리 구조 개선
- 데이터 정합성 메트릭 구성
- Migrate from spark streaming to structured streaming.
[Development of search services using Elastic search, Airflow, and Spark]
- Spark를 이용하여 하이브 테이블간 집계 결과를 ES 에 인덱싱(daily 100만건)
- 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 멘토링 발표
#### 인포뱅크 회사 Expert System 개발팀 인턴
2018.01 ~ 2018.02 (총 2개월)
- 한의학 분야와 Drools를 이용한 전문가 시스템을 융합 및 웹서비스 제공
- Nginx를 이용한 로드밸런싱 구조 구축 및 성능 벤치마킹
- A Scalability Study with Nginx for Drools-Based Oriental Medical Expert System 논문 발행
- - -
전자정보연구정보센터 한국정보처리학회 (제 2018-6-18 호)
- Drools를 이용한 Nginx와 Ajax기반의 Medical Expert System 개발
- - -
-
Drools 기반 한방전문가 시스템의 Nginx를 이용한 확장성 연구
https://github.com/WonYong-Jang/Medical-Expert-System/tree/master/journal
http://kiss.kstudy.com/thesis/thesis-view.asp?key=3652924
- Drools를 이용한 Nginx와 Ajax기반의 Medical Expert System 개발
- Drools 기반의 메디컬 Expert 시스템 아키텍처와 프로세스 연구
- 메디컬 Expert 시스템을 위한 Drools와 JavaFX 기반의 사용자 인터페이스 설계 및 구현
- - -
- 2012.03 ~ 2018.06 국민대학교 소프트웨어공학과 졸업