미리보기
기본 정보

2년 10개월 간 대학 입시 관련 시스템 개발 및 운영을 담당하며, 성능 최적화와 효율적인 데이터 관리를 통해 시스템 안정성과 사용자 편의를 증진한 경험이 있습니다.
자기소개
사용자 입장에서 생각하며 개발하는 개발자
처음에는 개발자가 편한 개발을 했습니다. 하지만 2년 10개월 동안 대학 담당자들과 직접 소통하며 시스템 개발 및 운영을 경험해본 결과 사용자의 입장에서 개발을 하지 않으면 추가 작업이 필연적으로 생기게 되어 비효율적이기 때문에 개발 단계에서 사용자 입장에서 생각하며 개발하게 되었습니다. 그 결과 사용자의 요청이 있을 때 사용자가 생각지 못한 방향에서 해당 요청을 역으로 제시하여 만족도가 높았다는 답변과 유지 보수 단계에서의 추가 작업이 많이 줄었습니다.
기술 스택
Java, JavaScript, Spring, Spring Boot, MSSQL, MySQL, Spring Cloud, ASP, Redis, Kafka, Docker, Jenkins
경력
(주)메티소프트
팀원 | 개발팀
2021.04. ~ 2024.01. (2년 10개월)
주요 업무 및 성과
충원/녹취 시스템 운영
실시간 데이터 처리 및 사용자 로그 관리
수납/환불 시스템 운영
결제 데이터 관리 및 환불 프로세스 개선
입시 종합 시스템 개발 및 운영
다수 대학의 입시 시스템 설계, 배포 및 유지보수
교육
항해99
사설 교육 | Spring 백엔드
2024.07. ~ 2024.10. | 수료
F-Lab
사설 교육 | Java 백엔드
2024.01. ~ 2024.05. | 수료
세종대학교
대학교(학사) | 전자공학과
2014.03. ~ 2020.02. | 졸업
프로젝트
대학 입시 통합 관리 시스템
(주)메티소프트
2022.04. ~ 2024.01.
프로젝트 소개
대학 입시 과정의 전반을 지원하는 웹 서비스로, 지원자를 효과적으로 관리하는 기능들을 제공합니다.
사용 기술
ASP / MS-SQL / Javascript / Jquery
역할 및 성과
서류 접수 및 자격 요건 검증
학과, 전형에 따라 필수 서류 유무, 자격 요건이 다름
기존 학교 시스템들은 모든 지원자들의 자격 요건이 충족된 상태로 시작하기 때문에 서류 접수 기간이 끝나야 작업 가능하고 자격 미달인 지원자들에 대한 추가 작업이 필요
학교 시스템과는 다르게 모든 지원자들의 자격 미달인 상태로 시작하여 서류 접수를 받아 체크할 때마다 자격 검증을 다시 하도록 설계했기 때문에 서류 접수 기간 중 작업 가능하고 자격 미달인 지원자들만 남아 추가 작업이 필요하지 않음초기에 바뀐 방식에 대한 설득이 필요했지만 사용 후 작업 피로가 줄고 만족도 향상
학생부 성적 연동 및 관리
지원자들의 각종 성적은 외부 DB를 통해 가져오는데 데이터의 수가 방대
데이터를 가져올 때 가공까지 하는 경우 쿼리 실행 시간이 24시간(하나의 쿼리에 외부 DB, 여러 조인문, 조건문 사용)
외부 DB에서 필요한 테이블을 임시 테이블을 사용하여 서버 DB에 가져온 후 가공하여 실행 시간 12분으로 단축
성적 산출 및 순위 매기기
각 대학, 학과, 전형마다 성적 산출되는 방식이 다름
대학별 모집요강을 파악
각 대학에서 성적 산출은 학과, 전형 구분 없이 한번에 진행하기 때문에 반복문, 조건문을 사용하여 구현
해당 작업은 모두 성공하거나 실패해야 하기 때문에 트랜잭션을 사용하여 하나의 작업 단위로 묶음학교 시스템과 교차 검증 후 사용자 만족
지원자 상태 실시간 동기화(충원/녹취, 수납/환불, 대학DB)
지원자의 상태(예비순위, 등록예정, 등록완료, 미등록, 환불)는 서로 다른 서버에서도 동일해야 함
실시간 동기화를 위해 MS-SQL에서 지원하는 Linked Server 기능을 사용
사용자의 작업 시간 감소
관리자 맞춤 통계 제공
입시 자료 중 다양한 통계 필요
관리자가 원하는 양식의 통계 자료를 각종 쿼리를 사용하여 제공(조인, 피벗, 집계 함수...등)
사용자가 요청한 자료를 정확하고 빠르게 제공하여 만족도 향상
FCFS
개인
2024.08. ~ 2024.09.
프로젝트 소개
MSA 기반 선착순 구매 시스템으로, 자원 동시성 제어와 서비스 간 적절한 통신을 구현했습니다.
사용 기술
Java / Spring boot / MySQL / Kafka / Redis / Docker
역할 및 성과
MSA 전환
회원, 상품, 주문, 결제 서비스가 분리되어 있지 않아 테이블 간 관계 설정에 대한 부담 및 하나의 서비스에 문제 발생 시 전체 서비스 이용 불가
MSA 전환을 통해 각 서비스를 분리
독립적으로 운영되기 때문에 하나의 서비스에 문제가 발생 시 다른 서비스들은 정상 운영
테이블 간 관계 설정 부담 낮춤
자주 사용되는 자원 Redis에 저장 및 동시성 제어
상품의 재고는 자주 사용되는 자원(특히 조회)
동시에 많은 사용자가 동일 상품에 접근하는 경우에 대한 대비가 필요Redis에 상품의 재고를 저장
Redis, 상품 DB의 재고 데이터 일관성을 위해 재고의 수량 처리는 Redis와 DB 둘 다 같이 적용
동시성 제어를 위해 분산락과 예약 재고 도입데이터 접근 속도 향상
재고의 정확성 향상
분산 트랜잭션 제어
사용자가 상품을 구매하는 경우 주문, 상품, 결제 서비스를 거침
중간 단계에서 문제가 발생하는 경우에 대한 대비가 필요Choreographed Saga 패턴을 구현하여 분산 트랜잭션 제어(Message Broker는 Kafka 사용)
각 서비스 간의 데이터 일관성 보장
성능 개선
JMeter 및 IntelliJ Profiler를 사용해 응답 속도 중심의 성능 개선 진행
DB 인덱스 추가로 약 13% 개선
DB Connection Pool 설정으로 약 34% 개선
비효율적인 코드 리팩토링으로 약 10% 추가 개선
OMVL
개인
2024.02. ~ 2024.05.
프로젝트 소개
소비자들의 유형에 따른 맞춤형 영양제 추천 서비스입니다.
사용 기술
Java / Spring boot / MySQL / Docker / Jenkins
역할 및 성과
AOP를 통한 공통 기능 분리
중복 로직 제거 및 재사용성 향상
CI/CD 파이프라인 구축
Jenkins를 통해 자동 빌드 및 배포 환경 구현
NAS 기반 협업 환경 구축
Docker-Compose를 활용하여 협업에 필요한 동일 DB 환경 조성 및 구축 시간 단축