Giter Club home page Giter Club logo

acm-backend's People

Contributors

chlalstjd430 avatar junhaesung avatar yjeongkim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

acm-backend's Issues

배포 스크립트 false alarm

[ec2-user@ip-172-31-11-108 bin]$ ./deploy.sh
usage: startup.sh [jar file path to execute. (default: /home/ec2-user/apps/acm-api/bin/acm-api.jar)]
Waiting 5s for starting application.
NUMBER_OF_PROCESSES: 1
ec2-user 12210     1 92 04:27 pts/2    00:00:04 java -javaagent:/home/ec2-user/apps/scouter/agent.java/scouter.agent.jar -Dscouter.config=/home/ec2-user/apps/scouter/agent.java/conf/scouter.conf -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -Dspring.profiles.active=develop,swagger -Dlogging.file.path=/home/ec2-user/apps/acm-api/logs -Dserver.tomcat.accesslog.enabled=true -Dserver.tomcat.basedir=/home/ec2-user/apps/acm-api -Djasypt.encryptor.password=Acm!@#123 -Xmx256m -jar /home/ec2-user/apps/acm-api/bin/acm-api.jar
ec2-user 12249 12247  0 04:27 pts/2    00:00:00 grep acm-api
[ec2-user@ip-172-31-11-108 bin]$ ./deploy.sh acm-api.36307749e58f8bfd41f28230c753269f6049a2e3.jar
usage: startup.sh [jar file path to execute. (default: /home/ec2-user/apps/acm-api/bin/acm-api.jar)]
Waiting 5s for starting application.
NUMBER_OF_PROCESSES: 3
ec2-user 12280 11911  0 04:27 pts/2    00:00:00 /bin/bash ./deploy.sh acm-api.36307749e58f8bfd41f28230c753269f6049a2e3.jar
ec2-user 12291     1 93 04:27 pts/2    00:00:04 java -javaagent:/home/ec2-user/apps/scouter/agent.java/scouter.agent.jar -Dscouter.config=/home/ec2-user/apps/scouter/agent.java/conf/scouter.conf -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -Dspring.profiles.active=develop,swagger -Dlogging.file.path=/home/ec2-user/apps/acm-api/logs -Dserver.tomcat.accesslog.enabled=true -Dserver.tomcat.basedir=/home/ec2-user/apps/acm-api -Djasypt.encryptor.password=Acm!@#123 -Xmx256m -jar /home/ec2-user/apps/acm-api/bin/acm-api.jar
ec2-user 12329 12280  0 04:27 pts/2    00:00:00 /bin/bash ./deploy.sh acm-api.36307749e58f8bfd41f28230c753269f6049a2e3.jar
ec2-user 12331 12329  0 04:27 pts/2    00:00:00 grep acm-api
Failed to deploy application. 'acm-api' process is not found.
[ec2-user@ip-172-31-11-108 bin]$

향수 목록 데이터 수집

💡 Idea

  • 크롤링 대상 사이트에서 모든 향수 데이터를 크롤링한다.
    • 현재 데이터 67,000개 이상, 계속해서 추가되고 있음
  • 향수 목록 : 향수 이름, 이미지, 상세 페이지 url 등...
  • 크롤링 대상 사이트에서는 목록에서 데이터를 1,000개까지만 가져올 수 있다.
    • 필터나 검색을 이용하여 데이터를 쪼개서 가져와야 함
    • 이 방법에 대해서 고민과 논의 필요함

📌 Task List

  • 향수 목록 수집하기
  • 향수 검색 조건(필터, 검색 단어) 구성하기

Reference

크롤링 대상 사이트(https://www.fragrantica.com)

수집한 데이터를 디비에 저장

💡 Idea

  • 수집한 데이터를 디비에 저장
  • url 을 기준으로 이미 저장한 데이터인지 판단

📌 Task List

  • entity, repository 등 데이터 저장 기능 추가 (h2 database)
  • 개발환경 생기면 mysql 로 변경

브랜드 데이터 수집

  • A~Z 로 분류되어있지만, 실제 페이지는 11개
    • https://www.fragrantica.com/designers-1/ ~ https://www.fragrantica.com/designers-11/
  • 브랜드 url 먼저 수집
  • 브랜드 상세 데이터 파싱
  • 브랜드 데이터 설계 및 저장
  • 브랜드 - 향수 매핑
  • 숫자로 시작하는 브랜드 누락 : 향수 상세 조회시 데이터 없는 브랜드 만나면 크롤링 시도

모듈별 설정 파일 이름 추가

도메인 모듈은 application.yml 그대로 사용
admin, api, batch 모듈은 admin.yml, api.yml, batch.yml 등의 설정파일 사용할수 있게함

노트 목록 데이터 수집

💡 Idea

  • 크롤링 대상 사이트에서 향수의 노트 데이터를 크롤링한다.
  • 노트 그룹과 노트 데이터를 수집한다.
  • 노트 그룹 : 그룹 이름, 설명 등...
  • 노트 목록 : 노트 이름, 이미지, 상세 페이지 url 등...

📌 Task List

  • 노트 그룹 목록 수집하기
  • 노트 목록 수집하기
  • 노트 그룹, 노트 매핑

Reference

크롤링 대상 사이트(https://www.fragrantica.com)

향수 상세 정보 데이터 수집

💡 Idea

  • 향수 상세 정보 데이터를 수집한다.
  • 상세 정보로 수집해올 데이터를 체크한다.
  • 페이지 구성이 조금씩 상이하므로 이 부분 꼭 확인하고 작업한다.

📌 Task List

  • 향수 상세 정보 데이터 수집하기
  • ...

Reference

크롤링 대상 사이트(https://www.fragrantica.com)

닉네임 변경 API 추가

  • 닉네임 중복 불가한데, 검사한 시점부터 온보딩 끝날때까지 그 닉네임이 계속 비어있는지 보장할 수 없음
  • 닉네임에 대해서 락을 잡거나, 검사시점에 바로 업데이트 하는 로직 필요
  • 닉네임만 변경 API 추가

향수 & 노트 URL 데이터 수집 및 매핑

💡 Idea

  • 향수 상세 페이지 url 데이터를 수집한다.
  • 노트 url 데이터를 수집한다.
  • 향수와 노트 데이터를 매핑한다.

📌 Task List

  • top, middle, base note 데이터 있는 향수 샘플 데이터 찾기
  • note 종류 구분없는 향수 샘플 데이터 찾기
  • 향수 상세 페이지 URL 수집하기
  • 노트 URL 수집하기
  • 향수와 노트 매핑하기

Reference

크롤링 대상 사이트(https://www.fragrantica.com)

향수 검색 API

💡 Idea

  • 향수를 조건별로 검색할 수 있는 기능을 개발한다.
  • 노트로 찾아보기
    • 노트 그룹 (13가지) 리스트화
    • 노트 그룹 설명과 추천 상품 n개 리스트화
  • 향수, 브랜드 이름으로 검색하기
    • 한 글자 입력할 때마다 검색됨 -> Elastic Search
    • 전체 검색 결과, 브랜드별 검색 결과, 제품별 검색 결과 각각 리스트화

📌 Task List

  • [ ]

Reference

크롤링 대상 사이트(https://www.fragrantica.com)

브랜드 이름 보정

AS-IS

{브랜드이름} perfumes and colognes 으로 저장하고있음

TO-BE

perfumes and colognes 부분 삭제

모듈 분리

💡 Idea

  • api, batch, admin 등 서로 다른 어플리케이션을 각각 모듈로 분리함

📌 Task List

  • domain, batch 모듈 추가
  • api 모듈 추가
  • admin 모듈 추가

회원가입 및 로그인, 인증 기능 추가

기능

  • 암묵적 로그인 (앱 아이디? 통한 익명 가입, 로그인)
  • jwt 사용
  • 리프레시 토큰 없음
  • 스프링 시큐리티
  • 추후 익명로그인 된 계정을 애플 로그인이나 카카오 로그인 등으로 연동할 수 있어야함
  • 로그인 필요한 요청에 로그인 안되어있으면 401

고민

  • 권한관리 필요한지?

인기브랜드 (all 공통) 로직 추가

  • 바이레도 BYREDO
  • 랑방 LANVIN
  • 조말론 Jo Malone London
  • 딥티크 Diptyque
  • 디올 DIOR
  • 샤넬 CHANEL
  • 불가리 bulgari, BVLGARI
  • 입생로랑 Yves Saint Laurent
  • 클린 CLEAN
  • 존바바토스 John Varvatos
  • 버버리 Burberry

암호화모듈 추가

  • 비밀번호 등을 코드에 작성할때 암호화할 수 있는 코드 추가
  • 스프링팀 서브 프로젝트에서 사용한 코드 가져오기!
  • 암호화키는 노션에 공유하겠습니다

개발서버 CI, CD 설정

jenkins job 생성

  • build
  • upload
  • deploy
  • api, batch, admin

upload 횟수를 줄일 수 있는 방법 찾아보기 (비용절감을위해)

(업로드 lazy 하게 하기 : deploy job 실행시 필요한 버전의 jar 있는지 확인하고 없다면 업로드, 있으면 업로드 안함)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.