📞 Please contact me by email
🔔 궁금한 걸 참지 않는 개발자 조아라입니다.
INTRODUCTION
대용량 데이터 기반의 Database & 프로세스 설계 경험과 서비스 운영 노하우를 보유한 백엔드 개발자입니다. 복잡한 쿼리를 설계/구현/튜닝한 다수의 경험을 보유하고 있으며 삼성에서 글로벌 서비스를 설계/개발/배포/운영하였습니다. 주로 Java, Javascript, Spring Framework, Oracle을 활용한 백엔드 개발을 담당했습니다.
현재는 국내 최대 메신저 회사에서 프라이빗 클라우드 서비스 SaaS 개발을 담당하고 있습니다. 전사 인증/인가 서비스인 SSO와 IAM을 설계 및 개발하고, 이를 실제 서비스에 적용되도록 지원하였습니다. 이러한 기술적 역량을 바탕으로, 카카오 테크 부트캠프에서 멘토로 활동하며 주니어 개발자들의 성장을 지원하고 기여하고 있습니다.
다양한 비즈니스 이해관계자와 커뮤니케이션하며 개발하는 것을 좋아합니다. 문제해결을 위해 혼자 고민하는 것보다 PO와 비즈니스 로직을 같이 고민하고, 고객과 화면/기능에 대해 얘기하고, 팀원과 효율적인 구현 방법에 대해 커뮤니케이션 합니다.
한 해 매출 150조 규모 사업의 글로벌 시스템을 운영하며 쌓은 역량으로 30억 규모 신규 프로젝트의 모듈 리더를 맡아 전반적인 프로세스를 설계하고 책임졌던 경험이 있습니다. 매사에 적극적이고 능동적인 태도로 임합니다. 저의 부족한 부분을 채우고, 팀원이 필요로 하는 점을 채워주기 위해서 치열하게 공부하고, 경험하고 있습니다.
Latest Updated 2024.10.08
KCP IAM 서버 디자인
주요내용
- 사내 private cloud IAM 서버 디자인 및 개발
- IAM과 연관된 클라우드 서비스들의 개발 및 운영
- MongoDB를 활용한 리소스 매니저, WebFlux 기반의 Health Checker, Neo4j를 사용한 Dependency 관리, SSO 통합을 위한 Notification 시스템 등
역할 : 백엔드 개발
세부업무
- Project, Service 모듈 담당
- 성공적인 노코드 플랫폼 EDA 전환 경험을 바탕으로, KCP IAM 프로젝트에서 DDD를 도입해 EDA 기반으로 전환했으며, 이벤트를 효율적으로 발행하여 시스템의 성능과 유지보수 효율을 크게 개선
- 전사 시스템 확대를 위한 user unique ID 기준값 전환
- 기존 user uuid를 관리하고 있었던 Krane Keystone 종속성을 제거하고 새로운 SSO 기반의 인증 시스템으로 전환. 기존 UUID에서 LDAP ID로의 전환을 포함하는 데이터 마이그레이션 계획을 수립하고 실행, 이를 통해 전사 시스템 간의 user id 일관성을 향상시킴.
- Health-checker, pusher → checker 이벤트 전송 시 rabbitMQ로 전환
- RabbitMQ를 활용한 메시지 큐 시스템 아키텍처를 설계하여, 기존 사내 메시징 시스템(Event Airport)에 대한 의존도를 해소
- 메시지의 유실 방지 및 추적을 위해 Dead Letter Exchange 및 Queue를 구현
- 1분 간격으로 200개 서비스의 상태를 helath check하며 메시지 처리 및 전송 성능을 검증하는 대규모 성능 테스트 실행
- Go 및 Java를 이용한 IAM client 라이브러리 개발
- 안정성과 확장성을 고려하여 HTTP 클라이언트 커스터마이징을 통해 타임아웃, 리트라이, 로깅 등의 기능 제공
- 비동기 처리 요청 관리를 위해 context 패키지를 도입하여 요청과 관련된 정보 전달, 타임아웃 설정, 취소 요청 처리 등을 효율적으로 처리할 수 있도록 제공
- React, TypeScript, Redux 기반의 server-driven UI 컴포넌트 및 IAM Web, IAM Admin web 개발
- Webflux 및 rabbitMQ를 이용한 Kakao Health checker와 Notification 서비스를 운영
사용기술
- Java, Go, Spring, RabbitMQ, React, TypeScript, Redux
노코드 플랫폼 서버 디자인
주요내용
- 노코드 플랫폼 Monokode 서버 디자인 및 개발
역할 : 백엔드 개발
세부업무
- 아이디어부터 출시까지 A-Z 개발을 주도하며, 제품 관리자, 디자이너, 프론트엔드 개발자와 협력해 신속하게 기능을 개발 및 배포
- 플랫폼 보안 강화: OAuth 2.0 및 IAM 기반 인증/인가 기능 개발
- Istio 기반으로 한 서버리스 SaaS 플랫폼에서 Spring Security filter chain및 Method Security 활용
- IF KAKAO 앱 및 주요 이벤트 페이지 안정적 운영, CBT를 통한 성공적 배포
- IF KAKAO 광고, 지역 비즈니스, 회사 차원의 주요 이벤트 페이지와 같은 다양한 비즈니스 유닛에서 활용가능한 내부 클로즈드 베타 테스트(CBT)로 성공적 배포.
- 부서 간 협업을 강화하여 No-Code 플랫폼을 활용한 if kakao 앱을 성공적으로 제작하고, 상당한 트래픽 볼륨을 효과적으로 관리. 일일 천만 트래픽을 기록하는 앱의 안정적인 운영을 지원.
- EDA 전환으로 앱 생성 시간 80% 단축
- 문제: 기존 모노리틱 아키텍처는 시스템 확장성과 관찰 가능성 부족으로 인해 성능이 제한되고 유지보수가 어려웠음.
- 해결: 시스템 아키텍처를 Event-Driven Architecture (EDA) 기반으로 전환하고, DDD와 Command-Event 분리를 도입하여 관찰 가능성을 향상시킴. 그 결과, 앱 생성 시간을 80% 단축시켜, 더욱 견고하고 분산된 시스템 환경을 구축
- 트랜잭션 관리와 user interactiom flow에 중점을 둔 server-driven UI 컴포넌트 및 monokode admin 개발
사용기술
- Java, Spring Boot, Spring Security (Filter Chain, Method Security), MySQL, Spring Data JPA, k8s, Docker, Gradle, TypeScript, React, Redux, Redux-Saga
KCP SSO 백엔드 개발
주요내용
- 사내 SSO(Single Sign-On) 시스템인 KCP SSO의 보안성 강화 및 개발/배포/운영
역할 : 백엔드 개발
세부업무
- KCP SSO 보안성 강화:
- 사내 보안 정책에 따라 Client Secret의 복잡도 강화 및 암호화 적용
- 보안 사고 분석을 위한 접속 로그의 고도화 및 Splunk 연동
- IAM(Identity and Access Management) 연동을 통해 클라이언트 권한 관리 API/WEB 설계 및 구현
- MySQL 8.0 버전 업그레이드에 따른 데이터 마이그레이션, 성능 테스트 및 운영 전환 작업 수행
- Spring Boot 및 Spring Security 버전업 수행
- Spring Boot 버전업 후 발생한 SSO 클라이언트 최초 로그인 401 에러 문제 해결
- Serialize/Deserialize 오류를 해결하고 재발 방지를 위한 절차 추가
- KCP SSO Prod 환경 배포 및 안정화
- 버전업 및 배포 과정에서 발생할 수 있는 문제를 사전에 테스트하고 대응하여 운영 안정성 확보
사용기술
- Java, Spring Boot, Spring Security, OAuth 2.0, Redis, MySQL, Spring Data JPA
차세대 생산관리 시스템 백엔드 개발
주요내용
- 차세대 생산관리 시스템 생산공정 모듈 웹 서비스 개발 및 운영
역할 : 백엔드 개발
세부업무
- 사용자 Needs에 맞는 사용성 개선과 신규 비즈니스 로직 설계 및 구현
- 타 시스템에 데이터를 전송하기위한 인터페이스 개발
- AOP를 이용한 Screen Logging 기능 오류 분석 및 조치
- 문제: 특정 비즈니스 API 수행 시 Util 기능 오류 다수 발생
- 해결: 디버깅을 통해 AspectJ를 사용한 AOP 구현 내에서 실행되는 Screen Logging 메소드 매개변수 타입이 비즈니스 API의 매개변수 타입과 일치하지 않아 문제라는 것을 발견했고, 비즈니스 API 내 메서드 매개변수 타입 일치화하여 해결
- 2,400만건의 Data 조회 속도 개선
- 문제: 특정 화면에서 Detail Data 조회 수행 시 TimeOut 발생
- 해결: Query Plan 확인, 적절한 인덱스 생성, 힌트 추가, 집계성 테이블 생성, 조회 필수 조건 추가, 데이터 보관주기 축소 등 다양한 방법 고민함. DBA와의 협업을 통해 통계 정보 수행이 오래되어 Smart Scan이 수행되고 있지 않음을 발견했고 비가동 시간에 통계정보 갱신하여 속도 개선
사용기술
- Java, Spring, Spring AOP, Spring Batch, Oracle, Javascript
자원 계획 시스템 구축 프로젝트
주요내용
- 제조 현장의 중장기 최적 자원 운영을 위한 시나리오 기반 자동 Simulation 시스템 개발
역할 : 백엔드 개발
세부업무
- 데이터 관리 기준 추가로 인한 문제점을 해결하기 위해 PK 재정립 및 정규화를 통해 고객에게 세밀화 된 비즈니스 제안 결과 제공
- 수행 속도 지연 배치/엔진 속도 개선을 통해 비즈니스 로직 수행 시간 89% 단축
- 문제: 매일 자정에 수행되는 시물레이션 결과 생성 시 9-10시간 소요
- 해결: 사전/사후 배치와 엔진 내 SQL 쿼리 튜닝, 엔진 수행 프로세스 점검 및 구조 변경 등을 통해 시물레이션 결과 생성 시간 약 70분으로 비즈니스 로직 수행시간 단축
- 시물레이션 데이터 비즈니스 Logic 및 Web API 개발
- 배치성 PostgreSQL Function 개발
- NextPlant SD IDE를 통한 할당엔진 개발
사용기술
- PostgreSQL, Java, Database Design, Spring Framework, Oracle, Javascript
부품 특화 생산관리 시스템 구축 프로젝트
주요내용
- 부품 공정에 특화된 생산관리 시스템 구축 프로젝트 수행
역할 : 품질 모듈 리더, 생산/품질 모듈 백엔드 개발
세부업무
- 비즈니스에 최적화된 시스템 구축을 통해 연간 257.3억원의 생산량 증대 및 공장 인력 85% 효율화
- 테이블 및 프로세스 재설계를 통한 데이터 비 연계성 문제 해결
- 문제: 시스템과 실물간의 데이터 불일치, 테이블 간 데이터 비연계성 발생
- 해결: 혼자서 데이터 Flow 및 테이블 관계도를 직접 그려가며 시물레이션 후 신규 테이블을 설계하였고, 그 외 기존 테이블 간의 관계 정리하여 해결
- 기존 600만건의 데이터에 대해 신규 형상으로 무중단 Migration
- Spring, Maven, xFrame 기반으로 작성된 레거시 비즈니스 모듈을 Spring Boot, Gradle, Nexacro 기반으로 컨버전
개발
- 컴포넌트 기반 화면을 xFrame Devstudio를 통해 Javascript로 설계/개발
- Java, Oracle, Spring Framework 환경에서 비즈니스 로직 및 API 개발
- Data Gathering 이슈 해결을 위한 모바일용 화면 개발
- 문제: 일부 비즈니스 공정에서 바코드 스캐너가 부족하여 많은 생산량에 비해 현장 Data Gathering을 못하고 적재 및 생산이 지체됨
- 해결: 스마트폰 자체 카메라를 활용하여 데이터를 수집/처리하는 모바일용 화면을 CortexScan를 이용하여 Java, Javascript로 개발
- 사용자 중심의 CX 개선 및 수집된 데이터를 시각화하는 백오피스 개발
사용기술
- CortexScan, Database Design, Spring Framework, Java, Javascript, Oracle
자재 공급 인식 프로세스 개발
주요내용
- 자재 창고에서 생산 라인으로 자재를 적기에 공급할 수 있도록 신호를 생성하는 웹 서비스 개발
역할 : 백엔드 개발
세부업무
- 자재 공급 신호 및 다음 모델에 대한 공급지시를 생성하는 Logic의 배치 개발
- 이종 시스템인 AGV 자재 공급 시스템에게 데이터를 전송하기위한 인터페이스 개발
- 라인으로 자재를 운반할 수 있도록 한 실시간 모니터링 보드 개발
- 데이터 수집/처리를 위한 컴포넌트 기반의 데스크탑/모바일 애플리케이션 화면, 백오피스 개발
- 레거시 코드 리팩토링을 통한 분석 Lead Time 단축
- 문제: 총 24개의 테이블 데이터 참조, 600~700 줄 정도의 긴 쿼리 10개 정도로 비즈니스 로직이 복잡하여 공급 지시가 제대로 생성되지 않아 확인이 필요한 경우 디버깅이 어렵고, 바로 확인하지 않으면 재현이 힘들었음
- 해결: 레거시 코드 리팩토링을 통해 가독성 증가, 디버깅 용이한 신규 배치 개발, 분석 Lead Time 단축
사용기술
- Spring Batch, Java, Spring Framework, Javascript, Oracle
SKILL
Back-end
- Java, Spring Framework, Spring Batch, Spring Security (Filter Chain, Method Security), Spring Data JPA, k8s, Docker, webflux, rabbitMQ
Database
- Oracle, PostgreSQL, MySQL, MongoDB
Front-end
- Javascript, HTML/CSS, TypeScript, React, Redux
IDE
- IntelliJ IDEA, VS Code, Nexacro, xFrame DevStudio
SCM
- Git/GitHub/GitLab, SVN, Dimension
ETC
- Jira, InnoRules, ERWin, Maven, Gradle, Confluence
STUDY
EDUCATION
Copyright © Ara cho. All rights reserved.