Search
👨🏻‍💻

이커머스 서비스 플랫폼 ( 회사 프로젝트 )

한 줄 소개
신규 이커머스 사업을 위한 플랫폼 개발 프로젝트
진행 기간
2022/06/27 → 2023/07/28
Skills
Java
Spring
MySQL
Mybatis
jQuery
JSP
SVN
팀 구성
PM 1명 / 팀 리더 1명 / 풀 스택 3명
프로젝트 활동 그룹
(주)디세이코리아
소스 코드

개요

국내 브랜드사와 해외 매장을 연결하며, 해당 국가의 고객들에게 상품을 판매할 수 있는 서비스를 제공하는 플랫폼 개발이 목적으로 개발하였습니다.
QR을 통한 제품 추적과 물류 단계에서의 유통 관리, 그리고 매장의 상품과 판매 데이터 등을 관리해 주는등 다양한 서비스를 함께 제공하는 것을 목적으로 개발하였습니다.

주요 이슈

공통 인프라 로직을 AOP로 분리
프로젝트 중 Controller 에서 로그인 관련 중복된 로직이 계속해서 작성되는 것을 발견하였음.
이후 해당 로직을 수정 해야하는 일이 생겼고, 모든 로직을 수정해야했기 때문에 시간과 비용이 크게 발생함.
Spring AOP 를 활용하여 해당 로직을 분할하였으며, Logging 로직 또한 중복되는 로직이었기 때문에 AOP 를 활용하여 분리하였음. 이를 통해 코드의 가독성과 유지보수성이 크게 좋아졌음.
Syncronized 를 활용한 재고 수량 동시성 이슈 해결
재고 수량이 1개일 때, 동시에 여러 스레드에서 접근하면, 재고 수량이 마이너스가 되고 주문도 가능한 동시성 문제가 발생
해당 프로젝트에서는 WAS 서버를 하나만 운영하기 때문에, Syncronized 를 활용하여 한 번에 여러 스레드가 접근 할 수 없게끔 하여 해당 동시성 문제를 해결하였음.
JOIN과 인덱스를 활용한 페이지 성능 개선
메인 페이지 상품 조회 시 로딩이 오래걸리는 문제가 발생하였음.
여러번 쿼리문을 접근하여 데이터를 불러오던 로직을, JOIN 을 활용하여 한 번에 불러올 수 있게끔 수정하였음.
또한, DB에도 인덱스 테이블을 수정함으로써 기기에 따라 최대 5~7초가량 걸리던 로딩 시간을 1~2초까지 단축할 수 있었음.
성능 개선을 위해 방법을 찾아보니, LIKE ‘%상품명%’을 활용하여 검색을 하면, 인덱스를 타지 않는다는 것을 알게 되었음.
ngram 방식의 Full Text Index 를 적용하여 문제를 해결 할 수 있었으며, 상품 검색 외에 LIKE 를 굳이 사용하지 않아도 되는 기능은 LIKE 를 제거하거나, ‘검색명%’ 방식으로 수정하여 문제를 해결하였음.
Self-Invocation 문제 해결
Transaction 의 격리 수준이 requires_new 였던 메서드가 있었고, 해당 트랜잭션이 정상적으로 동작하지 않는 문제를 발견하였음.
requires_new 에 대하여 알아보다보니, 논리적 트랜잭션과 물리적 트랜잭션에 대하여 알 수 있었고, 더 나아가 프록시 객체와 Self-invocation 문제에 대하여 알게 되었음.
별도의 Service 를 만들어 트랜잭션이 정상적으로 동작할 수 있게 수정하여 문제를 해결하였음.
JSTL 도입으로 가독성 문제 해결
사내에선 아직 스크립틀릿 방식으로 JSP 개발을 진행하고 있었고, 이를 통한 가독성 문제와 유지보수 문제가 발생하였음.
사내 회의에서 적극 건의를 통하여 JSTL 을 도입하였고, 스크립틀릿으로 되어있던 로직을 JSTL 로 수정하였음.
그 과정에서 직원들을 대상으로 JSTL 교육 담당을 맡게 되었고, JSTL로 교체함으로써 가독성과 유지보수성이 크게 향상되었음.

담당한 기능 및 역할

User 용 하이브리드 웹 애플리케이션 Back-end 개발
User 용 하이브리드 웹 애플리케이션 Front-end 개발
Owner 용 하이브리드 웹 애플리케이션 Back-end 개발
Owner 용 하이브리드 웹 애플리케이션 Front-end 개발
물류 하이브리드 웹 애플리케이션 Back-end 개발
DB 설계 보조
고객과의 커뮤니케이션을 통한 요구사항 분석
QA 테스트
단기간 운영 및 유지보수

프로젝트 진행 과정

고객과 회의 ( 솔루션 방향 제시 )
요구사항 작성
WBS 작성
DB 설계, 클래스 설계
환경 구축
프로젝트 개발
테스트
서버 구축 및 운영
산출물 작성