tomato-market / plan

0 stars 0 forks source link

인프라 구축 #5

Open Hyunuk17 opened 1 year ago

Hyunuk17 commented 1 year ago

@tomato-market-mentor 서버 구축에 대한 질문이 있습니다!

현재 EC2 인스턴스로 MariaDB를 구축, Workbench로 접근 가능하게 생성했습니다.

나머지 nginx, node, java, redis 구축에 대해서

  1. nginx&node
  2. tomcat&java
  3. redis(캐시 서버)

이렇게 별도의 EC2 인스턴스로 서버를 생성하는 것으로 이해했는데 맞을까요? 아니면 1,2번을 합쳐서 구축하는게 맞을까요?

tomato-market-mentor commented 1 year ago

@Hyunuk17님, 고생 많으셨습니다! org 내 별도 secret 등의 private 저장소를 하나 생성해서 db 접근 가능한 계정 팀에 공유주시면 좋을 것 같아요 :) 일단 1개 서버에 다 올리시죠!

배포도 해야되니 git 설치도 부탁드려요!

아래 내용으로 진행해주시면 될 것 같습니다.

Hyunuk17 commented 1 year ago

@tomato-market-mentor

MariaDB 설치되어있는 서버에 다 같이 포함해서 올리라는 말씀이실까요? 아니면 DB만 제외하고 하나로 묶어서 올리라는 의미인가요?

tomato-market-mentor commented 1 year ago

@Hyunuk17님, 일단 다같이 올려주세요. 다 올리고 서버 접근 키 공유주시면 리소스 가용 상태 한번만 볼게요.

Hyunuk17 commented 1 year ago

@tomato-market-mentor

네 알겠습니다! 가능한 한 금요일까지는 완성해서 올리겠습니다.

tomato-market-mentor commented 1 year ago

@Hyunuk17님, aws가 프리티어 리소스가 적은 편이라 구글 클라우드나 네이버 클라우드 프리티어도 한번 비교해보시면 좋을 것 같아요. 프리티어로 더 높은 스펙의 서버 받을 수 있으면 다른 서버로 갈아타는 것도 괜찮을 것 같습니다 :)

Hyunuk17 commented 1 year ago

@tomato-market-mentor 네 확인해 보겠습니다!

Hyunuk17 commented 1 year ago

@tomato-market-mentor

서버 구축 완료했습니다.

  1. nginx 설치 후 80번 포트로 접속 확인
  2. nvm 설치 후 node.js 18.16.0 설치, node -v, npm -v 확인
  3. java 17 설치
  4. git 설치
  5. git clone으로 backend repo 저장 후 gradlew로 빌드 및 8080번 포트로 접속 확인
  6. mariadb 설치 후 workbench로 3306번 포트 접속 확인
  7. redis 설치 후 medis로 6379번 포트 접속 확인
  8. Elastic IP 부여하여 고정된 IP로 접속
  9. Swap Memory 2GB 지정

spring boot 코드(~/app/tomato/) 빌드하다 인스턴스가 멈추는 일이 발생, swap memory 지정 후 문제 없이 동작합니다.

다른 서비스들은 비교해 봤는데 메모리는 1GB로 똑같고 네이버 클라우드가 저장소 50GB로 많기는 하지만, AWS의 다른 서비스들도 나중에 사용해보고 싶어서 일단 AWS 그대로 사용하는 것으로 정했습니다!

tomato-market-mentor commented 1 year ago

@Hyunuk17님, 고생 많으셨습니다!

  1. Swap Memory 2GB 지정

👍 FE 빌드 시에도 비슷한 문제가 발생할 수 있으니 빌드는 병렬보다는 직렬로 하는게 좋겠네요! 빌드를 돌리는 프로세스의 oom(out of memory) 우선 순위를 낮추는 방식도 있는데 참고 부탁드려요.


다음 액션 플랜으로 빌드 및 배포를 먼저 진행해도 좋을 것 같아요. 아래 내용을 참고해주세요!


위 내용을 기반으로 cd까지 구성해보면 좋겠지만 아마 리소스가 여의치 않으실테니 나중에 한번 해보시는 것도 나쁘지 않을 것 같습니다 :) Ex) release* 규칙의 브랜치로 PR 병합 시 해당 코드를 자동으로 배포

Hyunuk17 commented 1 year ago

@tomato-market-mentor

네 반영하겠습니다!

Hyunuk17 commented 1 year ago

@tomato-market-mentor

인프라 구축 진행 완료했습니다!

tomato-market-mentor commented 1 year ago

@Hyunuk17님, 고생 많으셨습니다! 👍 CI에 빌드도 한번 구동되도록 추가해주시면 좋을 것 같아요. 빌드가 깨지는지 PR 시점에 확인할 수 있어서 형상을 stable하게 관리할 수 있습니다 :)

자바쪽 CI는 저도 잘 몰라서 현욱님이 한번 찾아보시고 있다면 적용 해보시죠!

tomato-market-mentor commented 1 year ago

혹시 CD 구축이 여의치 않다면 배포 프로세스를 문서화해두시고, 해당 문서를 기반으로 팀원 모두가 배포할 수 있도록 하면 좋을 것 같습니다!