한 줄 소개
2년 차, 팀에 필요한 것은 다 하는 개발자 김수민입니다.
Contact.
Email. ksmin02@gmail.com
Phone. public 비공개
Channel.
Github. https://github.com/purewater02
Blog. https://blog.puredev.xyz
Blog.(legacy) https://purewater-practice-diary.tistory.com/193
Introduce.
2년 차 백엔드 개발자로 핀테크 서비스를 기획/개발/배포/운영 했고 앱 서비스를 기획/개발 했습니다. 백엔드가 주요 업무였지만, 원활한 업무 진행을 위해 프론트, 인프라를 겸했습니다. 첫 회사인 위펀딩에서 신규 서비스(위마켓, 원리금수취권 거래소)를 초기 단계부터 운영 단계까지 모두 참여했습니다. 두 번째 회사인 포커파인더에서는 신규 앱 서비스 출시를 위해 기획부터 개발 단계까지 참여했습니다. 단순 요구 사항 개발만 하는 것이 아니라 고객 입장에서 정말 쓸만한 기능을 개발하기 위해 항상 숙고하며 개발했습니다.
사용자가 불편함을 느끼는 지점이 발견되면 빠르게 수정하려 합니다. 특히 빠르게 개발하여 배포하기 위해 항상 노력하고 있습니다. 특히 어드민 시스템의 고객은 팀원들이기 때문에 팀원들이 업무에 불편함을 느끼는 지점이 있다면 우선 개발하여 업무 프로세스를 개선했습니다.
건전한 토론과 비판을 통한 코드 개선과 성장을 즐깁니다. 새로운 기술이 필요할 때는 강의나 자료 검색을 통해 빠르게 학습하기 위해 노력합니다.
Work Experience.
포커파인더
2023.12 ~ 2024.08 (Freelancer)
홀덤펍 검색과 토너먼트(게임) 예약, 매장 내 주문, 좌석 배치, 랭킹 확인, 실시간 게임 정보 확인을 할 수 있는 앱 서비스.
PokerFinder 앱
Back-end Developer
포커파인더 앱 백엔드 서버 개발.
- 도메인 및 스키마 설계
- Spring Boot 3.1.2 / JAVA 17을 활용한 RESTful 백엔드 서버 개발.
- DDD 구조로 설계 (api, 공통, 딜러, 이벤트, 게임, 펍, 예약, 유저)
- groovy를 활용한 buildSrc를 활용하여 그레이들 커스텀 플러그인 작성 및 모듈 공통 의존성 플러그인으로 주입.
- 소셜 로그인 도입
- firebase authentication을 이용한 소셜 로그인 stateless하게 개발.
- 코드 품질 관리
- sonarcube를 사용하여 code smell 제거 및 테스트 커버리지 확인.
- JUnit5를 사용해 서비스 레이어 테스트 적극 작성.
- spotless googleJavaFormat및 pre-commit hook 스크립트를 사용하여 강제 코드 컨벤션 관리.
- springdoc swagger를 활용하여 openApi 3.0 규격에 맞게 스웨거 작성.
- CI/CD
- 배포를 위한 dockerfile 작성.
- Github Actions(self-hosted runner)를 사용.
PokerFinder 어드민
Back-end Developer
포커파인더 어드민 백엔드 서버 개발.
- queryDsl, record 클래스 적극 활용하여 복잡한 쿼리 처리
- JWT 인증 구현
- QR 코드를 활용한 좌석 배정
위펀딩
부동산 투자를 통해 경제적 자율성을 확보하자. 부동산 대출투자를 주로 취급하는 크라우드펀딩 형식의 온라인투자연계금융업 플랫폼. 투자를 통해 가진 원리금수취권을 주식거래처럼 사고 팔 수 있는 위마켓 서비스 또한 제공합니다.
위마켓
Back-end Developer
2023.03 ~ 2023.12
위마켓 서비스 백엔드 서버 개발.
- 초기 기획부터 개발, 배포, 운영까지 모든 개발 총괄
- DDD(Domain Driven Design) 리서치 및 도입
- 주문, 오더북, 매칭, 계약의 도메인 설계 및 디자인
- 도메인간 원활한 통신을 위한 infra layer 구축 및 dto 오브젝트 룰 구축
- 외부 금융 API 연동
- 원리금수취권 양수/양도용 농협, 금결원 신규 API 활용을 위한 DB 스키마 재구성
- API 통신을 위해 외부 통신이 가능한 서버 인스턴스 구축
- 농협, 금결원 OAuth 인증을 위한 redis 및 인증키 관리용 캐싱 처리 구축.
- 외부 API 이용으로 인한 매칭/체결 에러 처리 문제 해결
- 내부 시스템 상의 매칭 체결 이후 농협, 금결원 API를 이용하여 실제 자금 이체와 양도/양수 기록 프로세스에서 발생하는 Transaction처리와 관련된 문제 해결.
- 다양한 동적쿼리를 위해 QueryDSL 적극 사용.
- 거래소 화면에 표현하기 위한 데이터 처리 과정에서 spring-data-jpa로는 극복할 수 없었던 문제들을 QueryDSL을 사용하여 쉬운 코드로 변경.
- CI/CD
- Github, Github Actions(self-hosted runner)를 사용한 CI/CD 구축.
- 외주 프론트엔드 지원
- springdoc swagger 구축
- 유연한 request, response 오브젝트 구성을 위한 DTO구축
- 세부 구현 기능 나열
- 계약 리스트 검색 및 필터링, 관심 상품 기능, 주문 및 체결 기능, 트레이딩뷰 실시간 차트 표현을 위한 Pusher.js 연동 기능, 상품 상세 내용 표출 기능, 체결시 알림톡 전송 기능, 금결원 양도/양수 기능, 양도/양수에 따른 잔고 이동 기능 구현
위펀딩
Back-end, Front-end Developer
2022.04 ~ 2023.12
위펀딩 서비스 백엔드 및 프론트엔드 유지보수 및 추가 기능 개발.
메인 플랫폼 위펀딩은 JAVA, 어드민은 Node.js로 개발.
- 위펀딩 서버 리팩토링
- DDD(Domain Driven Design)로 설계 및 리팩토링 완료
- spring-cloud 환경 도입.
- spring-cloud-gateway 도입하여 도메인 라우팅 구축 및 API 타입에 따라 권한 및 상태 확인을 위한 filter 구성
- spring-security 인증 전용 모듈을 새로 만들어 인증/인가를 처리하고 세션방식을 JWT 방식으로 변경. 반복적인 호출의 성능 극복을 위한 Redis 도입.
- 핀테크 사업을 위한 외부 기관 연동 및 전용 도메인 구축하여 예외상황 처리
- 코드 품질 관리
- googleJavaFormat 기준으로 코드 컨벤션 관리를 위해 spotless 를 구축하고 pre-commit hook 을 통하여 코드 강제 품질 유지
- gradle 6.x 에서 gradle 8.x 로 변경 후 groovy로 gradle 커스텀 플러그인 방식으로 공통 의존성 정리.
- 모듈 서버 간 HTTP 통신을 RestTemplate 에서 OpenFeign 방식으로 변경하여 간결하고 쉬운 통신 코드 관리.
- springfox swagger를 springdoc swagger로 변경.
- CI/CD
- Gitlab / Jenkins 를 Github / Github Actions로 CI/CD 변경.
- Github Actions workflow를 통해 각 모듈의 변경사항만 추적하여 변경이 일어난 곳만 배포하도록 변경. slack api 를 활용하여 배포 상태 및 에러 메세지 관리하도록 변경.
- 기존 서비스 이해 및 온보딩
- Spring Boot 2.4.3과 JAVA11 기준의 코드 분석
- gradle 멀티 모듈 방식을 활용한 도메인 별 서버 이해. (메인, 농협, 금결원, 클라우드, 배치, AML)
- 인프라 환경 이해 및 유지보수
- 처음 입사했을 때 테스트용으로 사용할 Dev 환경이 없었던 상황
- NHN cloud 이용, 개발용 인스턴스를 만들고 DB, 백엔드, 프론트용 서버, 금결원, 농협 통신용 서버를 만들고 개발 환경에서 테스트할 수 있도록 개발 환경 구축.
- 금결원, 농협 API 테스트할 수 있도록 데이터셋 생성.
- Gitlab, jenkins를 이용한 CI/CD 구축.
- 기타
- vue.js2 로 구성된 프론트엔드와 백엔드의 인터페이스 유지보수 및 vuex 관리
- 마케팅 팀 서포트를 위해 GA4 + GTM 환경 구축.
- 어드민 유지보수
- node.js, vue.js2로 구성된 어드민 유지보수
- knex 활용하여 복잡한 쿼리 처리
- 추가 기능 구현
- 대출 실행시 금결원 상품설명서 생성 및 pdf 전송 기능 추가. 감사에서 지적받을 수 있는 사항이라 스스로 발견해서 추가함.
- 동일 차입자 상품 투자 한도 계산 개선 및 UI 변경.
- 고객 건의 사항으로 접수된 거래 내역 엑셀로 다운받을 수 있도록 기능 추가 및 UI 추가.
- 투자 완료시 투자 완료 애니메이션 화면 추가.
- WRC 보고서를 만들기 위한 공공데이터 전처리를 DB화 및 보고서 작성 팀원에게 DB 사용법 전파로 업무 시간 단축
- 지도 표시를 위한 좌표 입력을 팀원들이 구글 지도를 찾아서 수동으로 입력하는 것을 보고 어드민에 주소를 입력하면 자동으로 좌표로 바꿔주는 기능과 UI를 추가하여 업무 시간 단축
Skill.
- Back-End: JAVA, SpringBoot, node.js
- Front-End: JavaScript, vue.js, HTML/CSS
- DB: postgresql, redis
- Infra: NHN cloud, AWS(EC2, S3), GitLab, GitHub, Jenkins, Github Actions