
Overview
AWS 기반에서 운영되는 프로젝트로 크게 EC2, OpenSearch, S3, CloudFront, RDS, Kinesis 를 사용했다.
EC2
EC2(STAGE)는 운영 반영 전 테스트를 위한 서버를 구축했다.
EC2(PROD)는 운영에 사용되는 서버로 jenkins docker는 1개만, 나머지 docker는 상황에 맞게 N개로 구성될 수 있도록 구축했다.
EC2 인스턴스 하나에 여러 도커 컨테이너를 생성하고, nginx를 통해 로드밸런싱 및 각각의 도커에 리버스 프록시로 통신하도록 구성했다. 또한 STAGE의 경우 사내 ip 외에 접근이 안되도록 whitelist ip를 설정했다. nginx설정(링크)
integration server
nodeJS 기반 typeorm, routing-controllers 활용한 controller - service -repository 계층 구조 WAS를 구성했다.
API의 외부 노출을 막기 위해 모든 요청은 정해진 도메인(https://buy.sild.app 등등)에서만 호출되게 node express의 cors 설정에서 차단했다.
integration 서버의 경우에는 pm2를 활용하여 N개의 인스턴스로 구성될 수 있게 했다. 또한 무중단 서비스를 위해 새 버전 배포시 rolling을 통한 무중단 배포가 가능하도록 설정했다.
Blue/Green 배포도 고려하였으나, 비용 문제로 EC2 인스턴스 갯수를 자유롭게 조절하기 힘든 상황이라 적용하지 않았다.테스트 및 코드 커버리지는 mocha, chai를 통해 점검했다.
so
vue v3 기반, 대시보드 구성 라이브러리는 primevue로 어드민 페이지를 구축했다.
관리자를 위한 각종 기능(회원관리, 상품관리, 마켓관리 등등)과 하위 관리자를 위한 메뉴, 기능의 권한부여를 가능하게 했다.
대량 처리를 위해 특정 기능은 Excel import로 일괄 처리, 수출 신고 정산을 위한 외부 전달용 export 가 되도록 구현했다.
recommend
관련상품 추천을 위한 python3, flask 기반 WAS를 구성, sklearn 라이브러리로 머신러닝을 구현했다.
주기적으로 추가/변경되는 상품데이터의 상품명, 카테고리, 설명, 소재 등 필요부분을 가중치를 나눠서 학습시켰다.
패션 의류/잡화 특성상 필요한 언어사전을 추가로 구축 및 주기적으로 튜닝했다.
카테고리 분류에도 머신러닝을 활용했다.
RDS
데이터의 백업 및 복구 등 소규모 개발자로 원활한 처리가 어려울 것을 감안하여 mariadb 데이터베이스를 직접 구축하지 않고 RDS 를 활용했다.
공용 테스트 DB를 운영과 분리하여 사용했다.
S3
카페24, 메이크샵 등 API 연동을 통해 수집되는 이미지 파일들을 저장했다.
CloudFront를 활용하여 각종 웹사이트를 제공했다.
OpenSearch
각종 검색, 로깅 활용을 위해 ElasticSearch기반 OpenSearch를 사용했다.
Kinesis를 통한 추적 정보를 저장하여 그래프 등 리포트로 생성했다.
Kinesis
유저의 행동패턴 분석을 위해 Kinesis를 통해 데이터를 수집했다.