미리보기
기본 정보

4년 경력의 풀스택 개발자로서, 코드 품질 향상을 위해 지속적으로 탐구하며 다양한 디자인 패턴을 연구하고 적절히 적용함으로써 코드의 확장성과 유지 보수성을 높이는 데 집중하고 있습니다. 업무 외적으로도 개인 개발 공부를 통해 새로운 기술을 학습하며, 조직 내 문제를 정의하고 이를 해결하기 위한 실질적인 방안을 팀원들과 함께 고민하는 것을 즐깁니다. 개발 과정에서는 요구사항 정의, DB 다이어그램, 플로우 차트, 시퀀스 다이어그램 등 다양한 UML을 활용해 시스템의 흐름을 사전에 분석하고 도메인을 깊이 이해하는 것을 중요하게 생각하여 이를 실천해오고 있습니다. 또한, 최종 사용자의 입장에서 한 번 더 고민하며 사용자 친화적인 기능과 직관적인 인터페이스를 제공하기 위해 노력하고 있으며, 단순히 요구사항 구현에 그치지 않고 사용자의 만족도와 비즈니스 가치를 동시에 높일 수 있는 솔루션을 제공하는 개발자로 성장하고자 합니다.
기술 스택
Spring Boot, Vue.js, Spring, Java, Docker, docker-compose, AWS, swagger, Kafka, DDD, TDD, hexagonal-architecture, Oracle, MySQL, PostgreSQL
경력
(주)인젠트
팀원 | ECM / DDM 개발팀 | 재직 중
2024.03. ~ 재직 중 (1년)
통합 문서 관리 솔루션 백앤드 및 프론트 앤드 개발자
Spring, Spring Boot, VueJs를 활용한 시스템 개발 및
관리자 페이지 개발을 진행 중입니다.
주식회사지엠씨랩스(GMCLABS)
팀원 | 기업부설연구소
2020.09. ~ 2022.11. (2년 3개월)
자체 솔루션 백앤드 및 프론트 앤드 개발자
가상화폐 거래소 REST API를 활용한 자동매매 사이트 개발
Websocket을 이용한 실시간 데이터 처리
프로젝트
Kafka를 활용한 이커머스 주문 및 결제 시스템 개발
개인
2025.01. ~ 진행 중
Toss payments PG API를 활용하여 이커머스 주문 및 개발 시스템을 구현 중입니다. 추후 대용량 트래픽을 위한 Kafka도 적용할 예정입니다.
Back-end
Java, Spring Boot를 통해 개발 진행
DDD 를 이용하여 도메인 주도 설계를 진행하였습니다.
계층 구조에 대한 학습을 진행하였고 Hexagonal Architecture을 적용하였습니다.
Retrofit 과 OkHttp 라이브러리를 활용하여 Toss Payments에서 제공하는 API 통신을 할 수 있도록 구현하였습니다.
JPA를 활용하여 관계형 데이터베이스를 관리하도록 하였습니다.
Swagger와 Spring Rest Docs를 결합하여 API 문서 자동화를 개발하는 중입니다.
요구사항에 맞게 TDD를 진행하며 개발진행 중에 있습니다.
Front-end
추후 React를 통해 결제 시스템 화면을 개발할 예정입니다.
Issue
DDD 를 적용하면서 먼저 요구사항과 설계 부분이 매우 중요하다는 것을 느꼈습니다. 그저 생각으로만 정의하면 되는 것이 아니라고 판단이 들어 직접 설계 툴에 요구사항을 직접 적어보면서 Domain event, Policy, Command, Actor를 정의하였고 마지막으로 Aggregate까지 정의를 하고 나니 DB 테이블 설계는 조금 원활하게 진행되었고 Entity 작성까지 완료할 수 있었습니다.
DDD를 적용한 이유는, 기존에 작성하던 코드 스타일이 절차지향적으로 작성되고 있다는 점을 인지했기 때문입니다.서비스 레이어에 로직이 한꺼번에 작성되면서 특정 클래스에 대한 의존도가 지나치게 높아지는 문제가 발생했습니다. 이러한 코드 스타일을 개선하고, 보다 구조적이고 유지보수에 용이한 코드를 작성하고자 도메인 주도 설계를 적용하게 되었습니다.
Hexagonal Architecture를 적용하면서 굳이 헥사고날 아키텍처를 적용할 이유가 있을까? 에 대한 고민을 많이 했던 것 같습니다. 단순히 있어보이기 위함이 아닌 기능적으로 실제로 필요한 아키텍처임을 증명하고 싶었기에 고민을 많이 했던 것 같습니다.
예전 업비트와 빗썸 API를 활용하여 개발을 진행한 경험이 있었습니다. 그 땐 port & adapter에 대한 개념을 몰랐기에 서비스 레이어와 외부 API 의존성이 강하게 결합된 구조로 개발을 진행했습니다. 그 결과, API 변경이나 대체가 필요할 때마다 코드 수정 범위가 넓어지고 유지보수가 어려워지는 문제를 겪었습니다. 이 경험을 바탕으로, Hexagonal Architecture를 통해 도메인 로직과 외부 의존성을 분리하고, port & adapter를 활용하여 확장성과 유연성을 확보하고자 했습니다. 이를 통해 핵심 비즈니스 로직은 독립적으로 유지하며, 외부 의존성 변경에 따른 영향을 최소화할 수 있음을 증명하고 싶었습니다.
Skill Stack
Java 21 , Spring Boot 3.4.1, Swagger, Spring Rest Docs, OkHttp, Retrofit, Junit5
Xtorm 카카오뱅크-웹관리자 기능개선요청
인젠트
2025.01. ~ 진행 중
기존 통합 문서 관리 솔루션(Xtorm)의 관리자 페이지에서 카카오뱅크 고객사가 제안한 기능을 개선 중입니다.
Back-end
Java, Spring 을 통해 개발 진행
관리자의 인증 및 권한 관리를 위한 LDAP 시스템 연동 기능을 설계하고 구현.
문서 관리 솔루션(Xtorm EX) 관리자 페이지 서비스에 필요한 RESTful API 설계를 진행하고 개발.
Front-end
Vue.Js를 통해 관리자 페이지의 구조 설계 및 구현
Skill Stack
Java 8, Spring Boot 2.4.3, JUnit5 , Vuejs 2.6.6, Oracle, PostgreSQL, MySQL
롯데카드 이미지 시스템 인프라 고도화 프로젝트
인젠트
2024.10. ~ 2024.12.
롯데카드에서 진행한 이미지 시스템 인프라 고도화 프로젝트에 투입되어 개발에 참여하였습니다.
Back-end
Java , Spring을 통해 개발 진행
각 이미지에 대한 정보들을 가져와서 적절한 저장소에 저장시키는 데몬 서비스 개발을 진행.
Issue
AS-IS 코드를 분석하고 TO-BE 로 옮기는 개발을 수행하면서 이미지 번호를 채번하는 로직이 있었습니다. 당시 AS-IS 코드에서 하던 대로 규칙을 가져와서 적용을 했는데 현업분과 테스트를 하다보니 동시성 문제가 생겨 이미지 번호가 동일하게 채번이 되거나 순서대로 채번이 안되는 이슈가 생겼습니다. 이 문제를 인식하고 이미지 번호 채번 규칙을 수정하는 방향으로 기획자와 소통을 하여 수정을 진행하였고 그 결과 원활하게 테스트를 완료할 수 있었습니다. 이 과정을 통해 앞으로 개발만 잘하는 것이 아닌 의사소통도 잘하는 개발자가 되어야겠다는 생각을 하였습니다.
Skill Stack
Java 11, Spring
Xtorm EX 관리자 신기능 개발
인젠트
2024.05. ~ 2024.09.
기존 통합 문서 관리 솔루션(Xtorm EX)의 관리자 페이지 고도화 기능 작업 프로젝트에 참여하였습니다.
Back-end
Java, Spring Boot를 통해 개발 진행
관리자의 인증 및 권한 관리를 위한 LDAP 및 SSO 시스템 연동 기능을 설계하고 구현.
다양한 사용자 역할에 따라 메뉴 접근 권한을 제어하는 기능을 개발하여 관리자 페이지의 유연성을 개선.
문서 관리 솔루션(Xtorm EX) 관리자 페이지 서비스에 필요한 RESTful API 설계를 진행하고 개발.
Front-end
Vue.Js를 통해 문서 관리 솔루션 관리자 페이지의 구조 설계 및 구현
Issue
LDAP 과 SSO 연동 시스템을 통합하는 서비스를 개발하였습니다. 여러 클라이언트들의 요구사항이 적힌 문서를 분석하여 각각 필요한 기능들을 정리하여 알맞게 통일시켰습니다.
Vue.Js 스크립트 내에서 분기 처리하던 코드를 컴포넌트 단위로 분리하여 리팩토링함으로써, DOMContentLoaded 속도를 673ms에서 360ms로 개선하였고, 초기로드 시간을 약 46% 이상 단축함.
Skill Stack
Java 8, Spring Boot 2.4.3, JUnit5, Vuejs 2.6.6, Oracle, PostgreSQL, MySQL, AWS
분리보관 패키지 개발
인젠트
2024.01. ~ 2024.04.
개인정보보호법이 개정됨에 따라 이에 맞는 데이터를 분리보관하고 파기하는 서비스 개발 프로젝트에 참여하였습니다.
관련 기사 : https://www.etnews.com/20240531000138
Back-end
Java, Spring Boot를 통해 개발 진행
관리자 페이지 서비스에 필요한 RESTful API 설계를 진행하고 개발.
Docker를 활용하여 외부 사업 프로젝트의 AWS 구성을 위한 테스트 모듈을 생성하여 제공하였습니다.
Front-end
Vue.Js를 통해 관리자 페이지의 구조 설계 및 구현
Issue
Docker에 대한 간단한 개념은 있었지만 실제로 실무에 사용해 본적은 없었기에 AXA 손해보험에서 요청한 업무는 저에게 새로운 자극을 주었습니다. AXA 손해보험에서 제공한 표준 정의서를 참고하여 Docker에 대한 개념을 다시 새로 공부하는 시간을 가졌습니다. 이후 분리 보관 패키지와 Xtorm WebAdmin을 같은 Pod에 구성하도록 하였고 java amazon-corertto- 21 버전 환경에 맞게 설치 도커파일 생성 후 제공하여 성공적으로 테스트를 완료할 수 있었습니다.
Skill Stack
Java 8, Spring Boot 2.4.3, Vuejs 2.6.6, Oracle, PostgreSQL, MySQL, AWS, Docker
Xtorm EX 관리자 신기능 개발
인젠트
2023.10. ~ 2023.12.
기존 통합 문서 관리 솔루션(Xtorm EX)의 관리자 페이지 고도화 기능 작업 프로젝트에 참여하였습니다.
Back-end
Java, Spring Boot를 통해 개발 진행
외부 API 호출을 용이하게 하기 위해 API Key 및 Secret Key 시스템을 설계하고 구현.
기존 이력 적재 로직을 리팩토링하여 코드의 가독성과 유지 보수성을 향상.
통합 문서 관리 시스템의 기능을 쉽게 사용할 수 있도록 API를 제공하기 위해 Junit5를 이용하여 테스트 코드를 작성하고, 기존 API 코드의 오류를 수정하여 안정성 을 강화.
문서 관리 솔루션(Xtorm EX) 관리자 페이지 서비스에 필요한 RESTful API 설계를 진행하고 개발.
Front-end
Vue.Js를 통해 문서 관리 솔루션 관리자 페이지의 구조 설계 및 구현
Issue
기존에 개발 되어 있던 이력 추적 로직은 메서드 마다 하단에 이력을 데이터베이스에 저장할지 말지 체크하는 코드가 작성되어 있었습니다. 앞으로 기능이 추가 될때마다 이러한 로직을 계속 수동으로 작성해줘야 하는게 불편하다고 생각이 들어 Spring AOP를 도입하여 특정 Annotation으로 이력 저장 기능을 관리하도록 리팩토링 하였습니다.
ApiKey와 SecretKey 기능을 구현하기에 앞서 시스템 설계를 보여달라는 요구사항이 있었습니다. 기존에 이용해왔던 draw.io 라는 툴을 통해 Sequence Diagram과 Flow Chart, DB Diagram을 작성하였습니다. 이 설계를 바탕으로 팀장님과 팀원들간의 개발 회의를 통해 어떻게 개발을 진행할 건지 회의하는 시간을 가졌습니다.
Skill Stack
Java 8, Spring Boot 2.4.3, Vuejs 2.6.6, Oracle, PostgreSQL, MySQL, AWS
Xtorm 관리자 페이지 마이그레이션
인젠트
2023.04. ~ 2023.10.
기존 통합 문서 관리 솔루션(Xtorm)의 관리자 페이지 마이그레이션에 참여하였습니다.
Back-end
Java, Spring을 통해 개발 진행
문서 관리 솔루션(Xtorm) 관리자 페이지 서비스에 필요한 RESTful API 설계를 진행하고 개발
Front-end
Vue.Js를 통해 문서 관리 솔루션 관리자 페이지의 구조 설계 및 구현
Skill Stack
Java 8, Spring Boot 2.4.3, JUnit5 , Vuejs 2.6.6, Oracle, PostgreSQL, MySQL, AWS
단타로
지엠씨랩스(GMCLABS)
2021.10. ~ 2022.11.
Okex,Upbit의 거래소에서 제공하는 Rest API를 활용한 자체 솔루션 개발에 참여하였습니다.
Back-end
java, spring boot를 통해 개발 진행
회원 관련 서버에 필요한 코드를 도메인 주도 설계(DDD)를 활용하여 작업
서비스에 필요한 RESTful API 설계를 진행하고 개발
자동매매 알고리즘 설계 및 개발 참여
Linux 서버 환경 구축 및 팀원 교육
서비스에 필요한 Backend API 설계 및 개발
Websocket를 활용하여 실시간 데이터를 Redis에 저장하여 사용
Front-end
관리자 페이지 작업을 위해 AdminLTE3를 활용해 화면을 기획하고 개발
관리자, 사용자페이지 작업을 javascript를 통해 개발
Issue
MSA 구조에 적응하기 위해 새로운 지식과 프로그램을 이해, 학습하고 적용했습니다. 이 과정에서 기능별로 서버를 분리해야 한다는 점과 Oauth2에 대한 실무 적용을 알아갈 수 있었습니다.
처음에는 실시간 데이터를 처리해야 할 때 http 통신방법을 사용하였습니다. 하지만 처리 속도가 느려 websocket 방식으로 변경하니 처리 속도가 확실히 개선된 것을 확인하였습니다.
Websocket 방식으로 변경을 하니 가끔 서버 측에서 인터넷이 끊길 때 받아오는 데이터도 갱신이 안되는 이슈를 확인하였습니다. 그래서 Error 처리를 해주는 method에서 다시 연결이 될 때까지 요청을 보내는 코드를 작성하여 해결하였습니다.
처음에는 websocket으로 받아오는 데이터를 postgresql에 저장을 하니 가끔 과부하가 걸리는 이슈를 확인하였습니다. 앞으로 사용자가 더 유입될 것을 고려하여 캐시 서버인 Redis를 도입하자는 결론이 나와 redis로 데이터 처리를 하니 과부하 현상이 사라진 것을 확인할 수 있었습니다.
자동매매 알고리즘 프로젝트를 서버에 배포했을 때 thread 관리가 되지 않아 몇몇 회원들의 알고리즘이 중단되는 이슈가 발생하였습니다. 자동매매 알고리즘을 실행하기 위해 @Async를 사용하였습니다. 여기서 발생하는 thread 때문이라고 생각하여 비동기 스레드 관리를 해주는 코드를 작성하였는데도 중단 이슈가 다시 발생하였습니다. 서비스가 중단된 회원들의 로그를 파악해 보니 Rest API 호출을 하기 직전까지의 로그만 있고 API 호출을 할 때 알고리즘이 중단되는 똑같은 패턴을 파악하였습니다. 그 후 API 호출을 할 때 사용되는 RestTemplate 스레드를 관리해 주는 코드를 추가하니 문제가 해결되었습니다.
slack을 도입하여 Github와 연동해 알림을 더 쉽게 받아볼 수 있도록 하였습니다.
Skill Stack
Java, Spring Boot, WebSocket, Redis, JavaScript, PostgreSQL, AWS, RestTemplate, OAuth2
DataTool
지엠씨랩스(GMCLABS)
2021.06. ~ 2021.09.
오너가 개인적으로 진행시킨 프로젝트로 기존 PHP로 되어있는 프로젝트를 java와 vue.js로 리팩토링한 작업입니다.
Back-end
java, spring boot를 통해 개발 진행
데이터를 가공하는 알고리즘을 교육받고 직접 Backend API를 설계하고 개발
Front-end
vuetify를 통해 디자인 작업 진행
Vue.Js를 통해 개발 진행
Issue
vue.js를 처음 써보는 프로젝트였기에 책을 사서 직접 학습하며 실무까지 적용시킨 경험을 하였습니다. 특히 vue.js와 spring boot 간 통신하는 부분을 적용시키며 흥미롭게 프로젝트를 진행하였습니다.
vue.js의 서버 배포는 처음 해보는 시도여서 혼란스러웠는데 nginx 웹 서버를 학습하면서 원활히 배포를 성공할 수 있었습니다.
Skill Stack
Java, Spring Boot, Vue.js, Vuetify, MySQL, Naver Cloud
스쿠텀 SCUTUM
지엠씨랩스(GMCLABS)
2021.03. ~ 2021.05.
Upbit,Coinone,Bithumb 거래소의 Rest API를 활용한 자체 솔루션 개발에 참여하였습니다.
Back-end
java, spring boot를 통해 개발 진행
자체 솔루션 알고리즘 설계 및 개발 참여
Linux 서버 환경 구축
서비스에 필요한 Backend API 설계 및 개발
Front-end
사용자 페이지 작업을 위해 Javascript를 통해 개발
Issue
여러 거래소의 API 작업을 하다 보니 똑같은 역할을 하는 메서드가 중복되어 나타나는 것을 확인할 수 있었습니다. 이 코드를 방치하다 보면 나중에 유지 보수가 어려워질 것 같아 사전에 방지하기 위해 디자인 패턴 적용을 하고자 하였습니다. 그중 제일 적합하다고 생각한 패턴이 템플릿 메서드 패턴이라고 생각을 하였고 공통적으로 사용하는 메서드들을 정리하여 캡슐화하였습니다. 이를 통해 비지니스 로직을 수행하는 부분에서 코드가 확실히 간결해진 것을 확인할 수 있었습니다.
Skill Stack
Java, Spring Boot, JavaScript, MySQL, Naver Cloud
포트폴리오
자격증
정보처리기사
합격 | 한국산업인력공단
2019.05.
교육
동의대학교
대학교(학사) | 컴퓨터소프트웨어공학과
2015.03. ~ 2020.02. | 졸업
부산동여자고등학교
고등학교 | 이과
2012.03. ~ 2015.02. | 졸업