미리보기
기본 정보
- 소프트웨어 개발자로서 CDN, 제조 및 게임(공통플랫폼) 산업 분야의 서비스 개발 경험이 있어요. - Clean Code 에 관심이 많고, 신기술 기반으로 레거시 서비스를 리팩토링 및 개선해왔어요. - 커뮤니티 플랫폼을 담당하고 있으며, 150+ API 가 Service-mesh 와 gRPC 로 구성되어 있어요. - 같은 질문을 100번 받아도 100번 친절하게 대답하려고 노력해요. - 새로운 기술을 배우는 것에 대한 거리낌이 없으며, Deep Dive 분석을 좋아해요. - 코드 리뷰, 정적/통합 테스트 자동화가 있는 환경에서 일하고 있고, 보다 더 나은 프로세스를 제안할 수 있어요.
기술 스택
Java, Spring, Kubernetes, MongoDB, istio, Tensorflow, Keras, Docker
경력
엔씨아이디에스
팀원 | UA서비스개발팀 | 재직 중
2024.10. ~ 재직 중 (1개월)
커뮤니티 백엔드 개발
엔씨소프트(주)
팀원 | UG플랫폼개발팀
2020.07. ~ 2024.09. (4년 3개월)
커뮤니티 백엔드 개발
- MSA 구조 개선 및 MonoRepo 전환
- service-mesh 구조 변경 및 내부통신 gRPC 전환
인증 백엔드 개발
- DDD 기반 로그인 WebAPI 리팩토링
- line, vk, 지사 인증 구현
- 간편 로그인 기능 구현(QR 로그인)
- 로그인 이력 정보 고도화 기능 구현
- 백업인증 고도화 / VM -> K8S 전환
효성ITX (주)
팀원 | 솔루션개발팀
2016.09. ~ 2020.06. (3년 10개월)
SmartFactory 백엔드 개발
- 섬유 원사 단면 이미지 판독 솔루션 개발
- 영업 지원 플랫폼 개발
CDN 서비스 개발
- 파일 동기화 솔루션 개발
- 로그 분석 솔루션 구축 및 개발 운영
- 비디오 분산 트랜스코더 개발
- 서비스 장애 모니터링 시스템 개발
프로젝트
커뮤니티 서비스 Service-mesh 고도화
엔씨소프트
2024.02. ~ 진행 중
Envoy Sidecar 패턴으로 구성된 Service-mesh 를 고도화를 위해 istio 및 Linkerd 검토 진행중
- istio Traffic 흐름에 관한 리서치
- istio mesh 구성
- Envoy mesh vs istio mesh 성능 테스트 진행 중
- istio 는 Envoy sidecar 를 사용하지만 go lang 으로 한 번 랩핑 한 구조
- istio 는 Pod 내에서 iptable Rule 에 의해서 동작
- istio vs Linkerd 비교
- 기술 스택 :
gRPC
,Envoy
,istio
,Linkerd
,k6
,kiali
,Kubernetes
Service mesh + gRPC 적용
엔씨소프트
2023.01. ~ 2023.10.
내용
- 커뮤니티 내부 프로토콜을 REST 에서 gRPC 로 전환
- 외부 서버는 REST 로 요청하고, httpJsonTranscoder 에 의해 gRPC 변환
- Envoy side-car 패턴으로 Service-mesh 구성 및 gRPC Load Balancing 문제 해결
역할
- WebFlux 의 Network Layer 인 Reactor-Netty 를 Armeria 의 Reactive 엔진으로 교체
- Envoy Proxy 리서치
- gRPC Bridge filter, MongoProxy, gRPC-JSON Transcoder filter 등 리서치 및 검증
- gRPC-JSON Transcoder 사용시 성능 테스트
- 약 TPS 기준
1.5 배
성능 향상
- 약 TPS 기준
- gRPC-JSON Transcoder 사용에 따른 성능 패널티 확인
- REST vs gRPC vs Using gRPC-JSON Transcoder
- vuser 32 기준으로 약
12.52 ms
정도의 성능 패널티가 있다는 것을 검증
- MongoProxy TCP filter 는 MongoDB 3.6 이상에서는 사용할 수 없음을 검증
- Envoy xDS 구성 표준화
- gRPC Server / Client Code Guide 작성
- protobuf Coding Conventions 정의
- 커뮤니티 내부 gRPC 구현
- Envoy side-car 적용
- side-car 를 사용하면 약
2.5 ms
의 성능 패널티가 있는 것을 검증
- side-car 를 사용하면 약
- Armeria httpJsonTranscoder 적용
- Armeria 에서
json_name
옵션 지원되지 않는 부분 확인 / 테스트 / Contribute - gRPC Error Handing (gRPC 에러 응답을 REST 응답과 동일하게 처리)
- protobuf Enum
allow_ailas
옵션 추가로 같은 값 할당 - HTTP JSON to gRPC mapping Rules 재정의
- Armeria 에서
- REST / gRPC 통합 테스트 작성
결과 및 성과
- 성능 향상 측면
- 내부통신 gRPC 로 변경 - 약 20~25 % 성능 향상
- Armeria httpJsonTranscoder - 약 20% 성능 향상
- 비용 절감 측면
- 운영 Pod 50% 이상 감소, 약 5천만원 이상의 비용 절감 효과
- 서비스 안정성 측면
- 통합 테스트 Coverage 100% 달성
- Armeria Contribute
- 기술 스택 :
Java
,Spring
,Armeria
,Envoy
,gRPC
,MongoDB
,Kubernetes
커뮤니티 MSA Re-Architecture
엔씨소프트
2022.10. ~ 2022.12.
내용
- MSA Re-Architecture 하여 운영 Cost 감소 및 성능 향상 목적
- 이벤트 저장소 cassandra → MongoDB 로 마이그레이션 및 변경
- 비슷한 역할을 하는 서버 통합
- 게시판 기능 권한 검증 및 도배 방지를 위한 검증을 하는 서비스를 라이브러리로 통합
- 운영툴에서의 통계를 위한 batch 서비스 통합
- MonoRepo + Helm 차트 적용
역할
- 커뮤니티 서비스 분석 및 서비스 통합 분류
- 비슷한 역할을 담당하는 서버 통합
- 게시판 기능 권한 검증 서버 라이브러리화
- 권한 관리 서버를 호출하는 Client 라이브러리 제거
- Mono Repo Version 관리 Plugin 개발
- Case 1) Build 시 라이브러리만 변경될 때
- 의존 관계가 있는 라이브러리(Parents) 버전 UP
- 의존 관계가 있는 서비스 버전 UP
- Case 2) Build 시 서비스만 변경될 때
- 서비스만 버전 UP
- Case 1) Build 시 라이브러리만 변경될 때
- Maven → Gradle 로 변경
- Helm Chart 구성
결과 및 성과
- 성능 향상 측면
- Network hoop 감소에 따른 성능향상
- 게시글 목록 조회, 게시글 조회, 댓글 조회 등 약 2% 성능 향상
- Network hoop 감소에 따른 성능향상
- 비용 절감 측면
- 서비스 통합과 라이브러화로 Product 감소 (운영 Pod 기준 약 3% 절감)
- 관리 측면
- Product 의 감소로 운영 Cost 절감
- 라이브러리 버전을 하나씩 올렸던 불편함 해소
- 기술 스택 :
Java
,Spring
,MongoDB
,Kubernetes
,Helm
DDD 기반 로그인 WebAPI 리팩토링
엔씨소프트
2022.01. ~ 2022.05.
내용
- 로그인 WebAPI 코드 레벨 리팩토링
- DDD 구조로 개선
- 디자인 패턴 적용
- SonarQube 구성 및 도입
- Spring Formatter 및 CheckStyle 적용
역할
- 전체 코드 리팩토링
- 전체 구조 개선 (DDD packaging 구조)
- 죽은 코드 + 불필요 로직 제거 + 메서드 분리 + Domain 별 Class 분리
- 무분별한 Lombok 사용 제거
- 디자인 패턴 적용
- Enum Factory, Builder, Adapter, Decorator ..
- 불필요한 properties 제거 및 일원화
- Logging format 변경
- Utils 성 class 들의 단일 사용 static method 들을 service layer 로 변경
- SonarQube 구성 및 팀내 표준화
- 사내 Cloud 이용하여 SonarQube 및 Jenkins 구성
- Spring Formatter / CheckStyle 적용 및 팀내 표준화
- 팀내 Java Code Convention 정의
- Lombok 사용 지양
- Domain 별 사용하는 상수 지정 클래스
- 특수한 로직을 처리하는 공통 Utils 클래스 추가
- CookieResolver, DateConvertor, Encrypor ..
- QoS Guaranteed, Graceful Shutdown 적용 및 팀내 표준화
- 안정적인 성능 보장 및 로그인 WebAPI 특성상 지연에 민감해서 QoS Guaranteed 적용
- Application & k8s 에서 Graceful Shutdown 적용
- JVM 튜닝
- 성능테스트를 통한 적정 JVM 옵션 검증
결과 및 성과
- 비용 절감 측면
- JVM 튜닝으로 운영 Pod 20% 감소, Memory 기준 약 20% 의 리소스 절감
- 서비스 안정성 측면
- SonarQube Bad Smell Zero 화, 잠재적인 Bug 개선
- 테스트 Coverage 0% → 60% 향상
- 코드 재사용성 향상
- QoS Guaranteed, Graceful Shutdown 적용으로 안정성 향상
- Spring Formatter 및 CheckStyle 적용으로 코드의 일관성 향상
- 기술 스택 :
Java
,Spring
,Kubernetes
,SonarQube
글로벌 회원 시스템 개편
엔씨소프트
2021.03. ~ 2021.10.
내용
- 글로벌 서비스를 위한 회원시스템 개편
- 비로그인 백업인증
- 비로그인 상태에서 백업인증 가능하게 기능 확대
- 실명 / 비실명 / 휴면 계정일 때 비로그인 백업인증으로 비밀번호 찾기 기능 추가
- 사내 L10N 정책에 맞는 언어 반환 서버 제공
- Envoy Edge Case 도입 으로 IDC / GCP 환경에서의 점검 페이지 전환 통일화
- 비로그인 백업인증
역할
- 비로그인 백업인증 구현
- 비로그인 백업인증 WebAPI 기능 추가 / Guide
- 백업인증 번호가 등록된 Case : 백업인증 후 비밀번호 변경
- 백업인증 번호가 등록되지 않은 Case : 백업인증 등록 후 비밀번호 변경
- 여러 테스트 Case 에 대한 검증 스트립트 작성
- 실명 / 비실명 / 휴면 계정 및 백업인증 등록 유무에 따른 Case
- 비로그인 백업인증 WebAPI 기능 추가 / Guide
- Language Resolver Server 구현
- 국가 코드 기반으로 사내 L10N 정책에 맞는 기본 언어 코드를 반환해주는 서버 구현
- 언어 우선 순위에 따른 언어 정책 반환
- Envoy Edge Case 도입
- IDC / GCP 환경에서의 점검 페이지 통일화
- Envoy LuaFilter 로 Redirect
- IDC / GCP 환경에서의 점검 페이지 통일화
결과 및 성과
- 서비스 측면
- 글로벌 환경에서(비실명계정) 비밀번호 찾기 수단 확대
- 각 페이지별 일관된 언어 제공
- 관리 측면
- IDC / GCP 환경에서 통일화된 점검 전환
- 기술 스택 :
Java
,Spring
,Kubernetes
3rdParty 인증 추가
엔씨소프트
2021.06. ~ 2021.09.
내용
- VK, LINE, 지사 계정 로그인 기능 확대
- VK, LINE, Tencent OAuth 서비스 분석
- https://login.plaync.com/nclogin/signin
역할
- VK, LINE OAuth 서비스 분석
- Market 관리 기능 분석 및 (SDK, PM) Guide
- 지사 3rdParty Login Flow 표준화
- VK, LINE, 지사 인증 페이지에서 AccessToken 획득 후, 내부 인증 요청 기능 추가
결과 및 성과
- 서비스 측면
- 글로벌 환경에서 로그인 수단 확대로 접근성 향성
- 기술 스택 :
Java
,Spring
,Kubernetes
간편 로그인 기능 구현(QR 로그인)
엔씨소프트
2020.12. ~ 2021.02.
내용
- 모바일 기기에서 이미 로그인 된 세션으로 Launcher 로 로그인할 수 있는 기능
- 퍼플런처에서 로그인 가능
역할
- QR Login Server / Web 개발
- QR Code 생성, 인식, 인식 이후 Login Process 처리
- QR Login Process Guide
결과 및 성과
- 보안 측면
- 계정 탈취 측면에서 안정성 제공
- 서비스 측면
- 개인 PC 나 Device 가 아닌 기기로 로그인 할 때 유저들의 편의성 제공
- 기술 스택 :
Java
,Spring
,Kubernetes
Smart Factory 영업 지원 플랫폼 개발
효성ITX
2020.01. ~ 2020.06.
내용
중공업 영업과 관련된 조달청 및 경쟁사 사이트에서 데이터 수집 및 분석 결과를 조회하는 솔루션 개발
역할
- 빅데이터 플랫폼 PoC 진행
- 빅데이터 플랫폼 Docker, Cloudera Docker 환경 구축 및 Kafka 메시지 전달 Hbase 적재 테스트
- Airflow Docker 환경 구축 및 Airflow API 추가 기능 구현
- Airflow cli 및 API 에서 제공되지 않는 필요 기능 구현 (dag 즉시 실행, 강제 종료 등)
- Airflow Operator Template 스크립트 구현
- 키워드 검색을 통한 데이터 수집 기능
- Backoffice 개발
- 기술 스택 :
Java
,Spring
,Docker
,Airflow
,Flask
,Python
,Cloudera
,MySQL
섬유 원사 단면 이미지 판독 솔루션 개발
효성ITX
2019.06. ~ 2019.12.
내용
섬유 절단면 이미지에서 단면 객체를 Detector 하고, 알고리즘을 통해 양/불 판정하는 솔루션 개발
역할
- 이미지 전/후처리 및 양/불 판정 알고리즘 구현
- 잡티 제거, 잘못 찾은 영역의 객체 제거, 윤곽선이 벗어나는 객체 계산 및 이미지 병합
- 양/불 판정을 위한 객체의 이형도, 단면비, 융착, 집속비 등 계산 알고리즘 구현
- 원사 단면 객체 학습 모델 구현(Mask R-CNN)
- Neural Architecture Search
- backbone 변경, Network Layer 추가 등 테스트 및 검증
- 각 공장 및 통합 DataSet 에 맞는 최적의 Hyper Parmaeter Search
- VGG Image Annotatoer 를 이용한 실제 측정에 사용된 이미지 데이터를 재사용할 수 있는 학습 데이터 Set 수집 Backoffice 개발
결과 및 성과
- 비용 절감 측면
- 공장 인원 리소스 절감
- 서비스 측면
- 서비스 자동화로 편의성 제공
- 전 세계 공장 8곳 적용
- 기술 스택 :
Python
,OpenCV
,Tensorflow
,Keras
,MySQL
파일 동기화 솔루션
효성ITX
2018.12. ~ 2019.03.
내용
고객사 사용자의 원격 시스템에서 파일 업로드 / 디렉토리 관리 시 해당 서비스 서버 그룹에 동기화 해주는 솔루션 개발
역할
- 서버 파일 업로드 / 디렉토리 변경 감지하는 Agent 개발
- 소켓 통신을 이용한 서비스 서버 그룹 간 실시간 파일 동기화 기능 구현
- Message Queue 파일 시스템 변경에 따른 무결성 보장
- Backoffice 개발
결과 및 성과
- 서비스 측면
- 고객사의 편의성 제공
- 기술 스택 :
Java
,Spring
,Zk Framework
,Syncthing
,Cubrid
로그 분석 솔루션
효성ITX
2018.01. ~ 2018.11.
내용
Edge Server 의 트래픽, 로그 데이터 들을 안전하게 수집, 저장, 분석할 수 있는 모니터링 시스템 개발
역할
- 멀티태넌시 Elasticsearch plug-in 개발
- 계정, 그룹에 따른 권한 관리 및 인덱스 권한 설정 plug-in
- Kibana custom UI plug-in 개발
- 멀티태넌트 선택에 따른 인덱스 할당 및 필터링, 사용자/그룹 별 Dashboard / Visualize plug-in
- Filebeat custom modules 정의
- Elasticsearch Cluster 구축 및 운영
결과 및 성과
- 서비스 측면
- CDN 운영자들의 편의성 제공
- 기술 스택 :
Java
,Spring
,Node.js
,Angluar.js
,Elasticsearch stack
비디오 분산 트랜스코더
효성ITX
2017.01. ~ 2017.12.
내용
분산 처리 되는 트랜스 코딩 시스템으로 여러 개의 동영상을 동시에 처리 하며, 분산된 서버들로 즉기 동기화 되는 솔루션 개발
역할
- ftp, sftp, http 업로드 한 파일을 트랜스 코딩 서버로 전달하기 전에 임시로 저장하는 업로드 스토리지 서버 구축 및 구현
- Transcoder 서버 개발
- Transcoding 요청시 metadata 를 조회하여 파일 옵션에 따른 트랜스 코딩 진행 후 서비스 서버로 자동 배포 기능
- 각 옵션 별로 대기 상태 중인 Transcoder 서버에서 동시 Transcoding 하게 처리
- Transcoder 고객사 / 운영자 용 backoffice 개발
- 디렉토리 및 Transcoding Contents 관리
- RTMP 스트리밍 서비스 제공
결과 및 성과
- 서비스 측면
- 고객사에게 안정성 제공
- 기술 스택 :
Java
,Spring
,JavaScript
,ffmpeg
,Cubrid
서비스 장애 모니터링 시스템
효성ITX
2016.09. ~ 2016.11.
내용
Ston 서비스를 이용하는 서버에 대한 5분 단위 데이터 수집 및 특정 임계치 상태 분석을 통한 장애 진단 모니터링 시스템
역할
- Ston Edge 서버에서 발생하는 5분 단위 통계 데이터 수집하는 Agent 개발
- Ston Edge 서버의 비정상 감지 기능 구현
- Origin, Client 서버의 Inbound, Outbound 트래픽 임계치 상태 분석 기능 구현
- service Id 별 수집 데이터 조회, 장애 이벤트 조회, 상태 조회 코드 차트, 응답 속도 차트 구현
결과 및 성과
- 서비스 측면
- 고객사에 안정성 제공
- 기술 스택 :
Java
,Spring
,JavaScript
,D3.js
,Oracle
포트폴리오
교육
연세대학교
대학원(석사) | 컴퓨터공학
2017.09. ~ 2020.02. | 졸업
대전대학교
대학교(학사) | 정보통신공학과
2008.03. ~ 2012.02. | 졸업
자격증
정보처리기사
기사 | 한국산업인력공단
2015.07.
OCJP
Oracle
2015.05.
자기소개
Awards
쏘카 X 정보과학회 AI 분석경진대회 장려상, 정보과학회
Yolo V3 Darknet 으로 검출된 차량의 IoU 지수를 활용해 주차 공간 찾는 알고리즘 적용
주차 공간이 아니지만 주차 공간으로 인식하는 경우 예외 알고리즘 적용
현대 IHL 아이디어 공모전 우수상, 현대 IHL
GPS 로 현재 위치 기반 인근 실시간 신호 정보(디지털화 된 신호등 만 해당)를 국가교통정보센터에서 받아서 모바일로 신호등 변경 예상 시간을 받을 수 있는 기능 구현
Training
학습 테스트로 배우는 Spring 3기 / 2024.06 / NEXTSTEP
인프라공방 / 2022.07 ~ 2022.09 / NEXTSTEP
도커/쿠버네티스 온라인 부트 캠프 / 2021.08 ~ 2022.01 / 멋쟁이사자처럼
ATDD 클린 코드로 가는길 / 2020.02 ~ 2020.03 / NEXTSTEP
시큐어코딩 자바 양성 과정 / 2015.03 ~ 2015.08 / 폴리텍대학, 고용노동부
자바 양성 과정 / 2014.09 ~ 2014.12 / 롯데정보통신, 고용노동부