
안녕하세요
Hello
こんにちは
Bonjour
hyewon1118@gmail.com
Tech Stack
MSA 기반의 이커머스 플랫폼에서 Seller Office 및 Back Office 공통시스템을 개발하고 있습니다. 주로 Java, Spring, Mybatis, Kafka, Redis, MySQL, Gitlab, Grafana 등을 사용하고 있습니다.
MSA 아키텍쳐에서의 기준정보의 관리, 개발 표준 프로세스 수립을 통해 서비스간의 혼란을 최소화하고, 개발 조직이 개인정보, 사용자 권한 등의 처리를 신경쓰지 않고 비즈니스에만 집중 할 수 있도록 하는 환경을 구성하는 것이 제 파트의 미션입니다.
완성도 높은 프로덕트와 클린한 아키텍쳐를 빌딩하기 위해 기획단계부터 적극적인 협업과 커뮤니케이션을 통해 시스템을 설계하고 개발하고 있습니다.
적극적인 개발 아티클 작성과 코드리뷰를 통해 함께 성장하는 문화를 만들고 있습니다.
Projects
시스템 초기 구축 당시 업무별로 과하게 분리된 API, UI 프로젝트 통합
낭비되고 있는 CPU, 메모리 자원을 효율적으로 관리해 EKS 클러스터 비용절감이 목표
JDBC 드라이버 변경 혹은 리소스 정보의 변경시에 개발자 공수 절감, 업무 생산성 확대가 목표
MSA 구조간 데이터 연동을 위해 사용하던 ETL을 Kafka 혹은 Spring Batch로 전환하는 전사 프로젝트에 참여해 신규 데이터 파이프라인 구성
Kafka Connect 를 이용한 ETL 전환
단순 CDC 성격의 ETL의 경우 Kafka Connect를 활용하여 Source Connector 및 Sink Connector 를 생성해 파이프라인 구성. 주로 RDS → RDS 간의 데이터 파이프라인을 구성
Custom SMT 플러그인 개발 : CDC 성격이지만 추가적으로 간단한 도메인 요구사항이 필요한 경우에는 성격에 맞게 KSQL 혹은 Custom SMT 플러그인을 개발해서 적용
Message Broker 전환
RMQ → Kafka 전환 : 기존에 Message Broker로 사용하고 있던 RMQ를 Kafka로 전환. 프로듀서와 컨슈머 프로젝트의 작업시기가 각각 달라 Feature Flag로 개발하여 유연하게 적용할 수 있도록 개발
MySQL/PostgreSQL Source Connector, JDBC Sink Connector 을 구성하고 파이프라인을 검증
로컬환경에서 Docker Compose로 카프카 커넥트, 브로커 시스템 구성해 디버깅 및 테스트
다소 긴 데이터 릴레이를 최소화하고자 ETL을 Kafka Streams로 전환해 실시간 처리로 개선
ASIS 릴레이 : 외부 데이터 → 인터페이스 → 타 팀 MSA → ETL (하루 2회 실행) → 우리팀 프로젝트 → 우리팀 DB -> 타 팀 MSA
여러 토픽들을 읽어 스트림으로 생성 후 이를 활용해서 Join, Consuming하고 바로 DB에 저장 및 업데이트하는 신규 Spring 프로젝트 개발
오프셋 초기화 가능성을 고려한 멱등성 높은 컨슈머 로직 개발
전체 MSA 인스턴스에 브로드 캐스팅 메시지를 발신하여 기준정보를 갱신시키는 기능을 캐싱 구조를 변경하여 CPU 사용률과 쿼리 수행 시간을 개선
전체 MSA 인스턴스에 브로드캐스팅하는 API의 캐싱구조를 변경하여 성능 최적화
각 모듈의 파드수인 352 회 → 모듈별 1회 ( 22회 ) 쿼리 수행횟수 감소, 기존에는 2배수준 (12% → 25%)로 상승하던 CPU 사용률이 이후에는 지표상으로 상승 없음
이력을 저장하는 DB로 PostgreSQL을 활용했으나 비용 효율화 및 시스템의 원활한 유지를 위해 이를 절체하고 MySQL로 이관하는 프로젝트 리딩.
DB엔지니어링팀 및 데이터를 사용하는 여러 부서와 협업하여 다운타임을 최소화할 수 있도록 작업
어플리케이션 코드 레벨에서는 분리된 트랜잭션을 수정하하고 Mybatis 를 사용한 프로젝트 였기에 PostgreSQL, MySQL 쿼리를 비교하여 개발
테스트계에서 데이터 동기화를 위해 임시 Kafka Source Connector, Sink Connector를 구성해서 동기화
전사 IAM 시스템 전환 프로젝트에 참여해 기존에는 ID, Password 기반의 사내 백오피스 인증을 Okta Auth Provider를 이용한 Oauth 2.0 기반의 SSO로 전환
메일을 통한 MFA 구현해 개인정보를 다루는 사용자에게는 추가 보안 적용
동시 접속 제한
PO, PD들이 BackOffice 에서 화면, 메뉴, 권한을 등록할 수 있는 시스템 개선해 다른 PD들의 개발 프로세스를 단순화하고 생산성에 기여
개발자들의 실수가 잦았던 기능 및 UI 를 PO와 함께 협의 및 기획 후 개선
수동으로 기능에 대한 권한 부여하던 부분을 API로 부여할 수 있도록 자동화
오프라인 매장에서 이벤트 등의 특정 서비스를 운영하고 관리할 수 있도록 추가 휴일 서비스 개발.
휴일 관리 Admin 메뉴 및 대량 휴일 엑셀 업로드 기능 개발
다른 MSA에 제공하기 위한 RESTful API 개발
담당자 및 업체 사용자의 연락처 점유 인증 기능을 도입하여 셀러 정보의 정확성과 개인정보 보호 강화.
Redis를 이용해 인증번호의 탈취 및 재사용을 방지할 수 있도록 개발해 리스크 관리
오프라인 매장에서 이벤트 등의 특정 서비스를 운영하고 관리할 수 있도록 추가 휴일 서비스 개발.
휴일 관리 Admin 메뉴 및 대량 휴일 엑셀 업로드 기능 개발
다른 MSA에 제공하기 위한 RESTful API 개발
Saas, On-Premise 형태의 웹 ERP 서비스를 개발하고 유지 운영했습니다. 주로 대학교 산학협력단을 위한 ERP 서비스를 담당했고, 결재, 과제, 연구원 계약 등의 서비스를 개발했습니다.
외부 연구비 집행 관리 시스템과 연계할 수 있는 인터페이스, 배치를 개선 및 관리해 시스템의 안정성에 기여했습니다.
Projects
사내에서 사용하던 Java프레임워크인 Jex Framework의 업그레이드 프로젝트에 참여.
Depercated된 메소드 및 클래스 제거 및 전환
테스트 코드 작성으로 전환 이전의 기댓값과 같은 결과가 도출될 수 있도록 검증
On-premise형태로 서비스를 사용하는 고객사의 리소스가 부족한 경우 시스템에 이슈가 있어, 이를 개선하기 위해 로그 삭제 배치를 개발해 적용
연구 과제 산하의 연구원 및 학생들의 계약을 관리하기 위한 신규 메뉴 및 서비스 개발
신규 계약 등록, 기존 계약 히스토리 생성, 계약 리포트 생성 등의 기능 개발
DB 프로시저를 활용한 통계 화면 개발
이 좋아요를 누르시면 아무 일도 생기지 않지만 그저 제 기분이 조금 좋아집니다.