Docker
- 기존 REACT 관련 도커 내용 기록
- REACT server - 3000 port
- NodesJS - 3002 port
- NGINX ..
사용한 원인
- proxy 설정때문
- local에서 테스트 하고 oauth/ s3등 접근 하려니 계속 CORS 에러가 남
-
(아마도) port 불일치, IP 불일치 및 정책 문제로 CORS 문제가 다수발생 ( JAVA 및 S3)
- 누누히 말하지만 JAVA쪽에선 협조가 전.혀. 안됬기 때문에 FRONT에서 다 해결해야했음
-
Proxy 떄문에 NGINX도 써야해서 좀 과한 설정인건가 싶은 생각도 듦
-
EC2 프리티어의 한계로 docker 및 Docker-compose를 쓰면 디스크 관리
, Volume 관리
라는 새로운 이슈 발생
Error 1
상황 ) S3에 직접 client 호출
그러나 이미지가 로딩이 느려지는 이유
- 이론상 hop수가 적기 때문에 ( 직접 연동) 성능부분에서 뛰어났어야 함
- 기존 AI 생성 이미지가 크기가 컸음
- 즉 모든 blob 파일을 다 crud 해서 해당 내용을 filter링 하려니 prompt로 키워드 입력받아야 하는 client 입장에선 해당 기능의 단점이 더 부각됨
- client에서 이 blob 파일을 acceess를 위해 코드 리팩토링을 위한 공수 및 시간 소요
- 민감한 정보(aws access key 등) 유출 보안 위험 발생
- 그리고 자꾸만 CORS 에러 발생함 ( S3 버킷 policy 및 CORS 정책을 적용했음에도)
solved 성능
Nodejs 자체 API 관리 서버 개발
- env를 활용해 민감한 정보 관리
- hop수가 늘지만 로직을 이용하여 전체가 아닌 일부의 blob 파일만 갖고오게 함
- Proxy 설정을 써서 개발 환경에서 주로 cors error를 우회하기 위해 만듬
- Proxy 설정때문에 결국은 NGIX도 써야하는게 좀 흠이긴 했음
error2
상황) 개발 환경에선 충분히 Nodejs로 CORS등 에러 핸들링이 가능했음
근데 배포환경에서 NGINX 왜 쓰는데
solved 배포환경과 개발환경의 차이점
- 이번 프로젝트로 deploy 와 production 환경에 있어서 속도 성능차이가 확실하다는 것을 느낌
EC2 튕김
- EC2가 t2.micro로 프리티어 레벨^^
- 볼륨을 프리티어 제공 최대로 높여줌
- 그래도 docker등 세팅이 무거워 질수록 서버 튕김 현상을 자주 보여줌.
- Remote로 작업하려해도 tunneling 자체가 무겁게 돌아감 속도가 갈수록 느려짐
- swap 메모리도 2G 다 땡겨썼으나 여전히 느림
- 기존 개발환경이랑 똑같은 환경으로 배포하려 했으나 세팅 불가능한 수준임
- 그래서 NGINX를 찾게된 것임 ( 배포환경을 별도로 관리하려함)
- NODEJS는 API 용으로만/ REACT는 CLient 서버용/ NGINX에서 CORS및 Proxy 해결
Error 3 의존성 문제
상황) Node module 들 중 node가 18 버전 이상이여야 지원되는 package가 있었음
근데 ec2는 프리티어라 옛날 16 버전만 지원가능한 상황
- 로컬에서 개발 잘 하면 머하누.. 배포가 안되는데요..
- 저 의존성 문제로 yarn 도, npm 설치도 안됨
solved Docker
- 그래서 Docker를 알아봄
- msa처럼 각 서버를 기능별로 쪼개서 관리하는거임
- 근데 알아보니 말처럼 쉽지는 않았구요
- 배포는 했는데 local에서 분명 해결한 cors가 재탕되기 시작함
error 3-2 cross-env, cocurrently 이슈
상황 ) 같은 ip 대역대 내에서 nodejs 와 react 둘다 한번에 돌려야 통신이 됨.
- MACOS와 WINDOWSOS 개발자 둘이서 동시 개발을 하다보니 OS 이슈도 있었음
- 의존성 문제에 이어 위 패키지도 문제였음
- script내에선 yarn dev 실행되야 했는데 앞선 의존성 문제로 yarn을 못쓰고 있었음
Solved Docker가 답이다
- docker로 yarn 설치가 가능함
- docker로 의존성문제는 해결가능함
error4 DockerFiles 문제
- 분명 성능 및 효율적인 서버 관리를 위한 Docker 였으나
- 막상 network, image, container들의 문제로 ec2가 느려짐
- DockerFile 및 docker cmd를 이용해서 일일이 삭제하는게 좀 귀찮음
sovled docker-compose
- docker 를 가볍게 관리하기위한 관리용 도구
- 기존 docker 데몬도 필요하더라구요
- 원래 목표로 한 디스크 용량이 감소하진 않았음
- 정말 길어지는 docker cmd를 줄이고 직관적으로 관리하기엔 편하긴해서 쓰는중.
Error5 Proxy , CORS
- 개발 환경와 배포환경이 다른 것의 주요 원인
- 위 문제를 해결하는 접근방식이 달라야 하는 듯.
배포를 위한 NGINX?
- NGINX로 효율적으로 성능 및 서버 관리가 가능하다고 함
- 일단 포트가 다른 서버가 있기도 하고.
- NGINX로 중간의 cors나 Proxy 관리만 하면
- 기존 NODEJS와 client에 중복해있는 cors 처리 코드가 줄어들테니 서버 코드 가독성이 높아지려나.
서버가 다수이기 때문에 독립적으로 관리할 필요는 느꼈지만