SILD 서비스 개요

유재민's avatar
Apr 04, 2024
SILD 서비스 개요

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

  • OpenSearch

    • 각종 검색, 로깅 활용을 위해 ElasticSearch기반 OpenSearch를 사용했다.

    • Kinesis를 통한 추적 정보를 저장하여 그래프 등 리포트로 생성했다.

  • Kinesis

    • 유저의 행동패턴 분석을 위해 Kinesis를 통해 데이터를 수집했다.

Architecture

Share article

jaeminlog