TIL

Sarahsea 사라씨·2021년 9월 27일
1

TIL

목록 보기
76/128
post-thumbnail

정규

배포자동화
codeDeploy, codeBuild, codePipeline 등 aws 배포관련 서비스들

스프린트 - 정적웹 클라 s3, 서버 ec2, db rds를 이용, 환경변수 설정, IAM role

궁금했던 것 OR 에러 기록

#1
appspec.yml 파일 생성,
script/initalize, start, stop.sh 파일 생성

#!/bin/bash
// 이 명령어가 뭘까?
cd ...

=> 해당파일을 bash로 실행시키겠다는 의미

#2
ec2에 소스코드는 깃헙레포를 이용해서 codeDeploy로 서버를 자동 배포하는 데에는 성공했으나, 실제 서버 응답이 먹통인 상태

직접 ec2에서 pm2 ls 봤을때, 실행리스트가 아예없거나, status가 errored인 것을 발견,
직접 app.js 실행시켜 보니, npm 모듈이 설치 되지 않았음을 발견함

Error: Missing required argument #1
npm ERR! typeerror     at andLogAndFinish (/usr/share/npm/lib/fetch-package-metadata.js:31:3)
npm ERR! typeerror     at fetchPackageMetadata (/usr/share/npm/lib/fetch-package-metadata.js:51:22)
npm ERR! typeerror     at resolveWithNewModule (/usr/share/npm/lib/install/deps.js:456:12)
npm ERR! typeerror     at /usr/share/npm/lib/install/deps.js:457:7
npm ERR! typeerror     at /usr/share/npm/node_modules/iferr/index.js:13:50
npm ERR! typeerror     at /usr/share/npm/lib/fetch-package-metadata.js:37:12
npm ERR! typeerror     at addRequestedAndFinish (/usr/share/npm/lib/fetch-package-metadata.js:82:5)
npm ERR! typeerror     at returnAndAddMetadata (/usr/share/npm/lib/fetch-package-metadata.js:117:7)
npm ERR! typeerror     at pickVersionFromRegistryDocument (/usr/share/npm/lib/fetch-package-metadata.js:134:20)
npm ERR! typeerror     at /usr/share/npm/node_modules/iferr/index.js:13:50
npm ERR! typeerror This is an error with npm itself. Please report this error at:
npm ERR! typeerror     <http://github.com/npm/npm/issues>

sudo npm install을 수동으로 해봐도
인스톨 중간에 위와 같은 에러가 뜨면서
필요한 전체 모듈이 제대로 설치가 되지 않았다

node 버젼 문제인가 싶어서,
14버젼으로 낮춰봤는데도 안되서 이리저리 헤매다가
뭔가 깔았던걸 언인스톨하고 다시 깔아줘야 할까 싶던 차에

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install nodejs
node -v

요런 명령어를 발견 (참조: )
다시 sudo npm install을 한뒤 npm start 하니 잘 실행이 된다,
따라서 자동배포화의 문제는 아니고,
ec2 노드버젼 호환 문제로 소스코드에 필요한 모듈이 제대로 설치되지 않아 생긴 문제라는 것을 알 수 있었다

#3 페어가 ec2에 서버 자동배포하려햇는데, deploy 단계에서 에러가 남
에러 로그를 확인하려 했으나, opt폴더는 있는데, deploy-agent 경로가 없었다..?!
->deploy-agent 설치가 제대로 되지 않은 것을 발견, aws 안내대로 수동으로 deploy-agent 설치...하려했으나 잘 되지 않음 ( 마지막 단계 인스톨이 안됨)
=> 결국 ec2 인스턴스 우분투 18버젼으로 다시 만드니 이런 이슈는 생기지 않았음, 20버젼에서 해결하는 방법은 아래 링크

답은 언제나 에러코드 자체를 제대로 읽는 것과 (곡해 노노), 갓글링 뿐

개인

  • 코테, 토이
  • 지난 ha 때 테스트 통과만 되고 구현이 안되던 부분 개선, 로그인 되게끔 수정
    • 테스트 코드 통과용과 실제 jwt 토큰이 담겨오는 경우가 달라서 내가 설정한 split 값이 맞지 않는 부분 수정
    • 서버에 응답 설정 부분에 조건문에서 제대로 다 포함하지 못하는 (이런 경우대게 응답 대기시간 길어지다가 자동 500대 오류 코드), 한마디로 누수나는 부분을 찾아서 막아줌;
    • 토큰 생성할때, 옵션으로 넣었던 만료 기간이 너무 짧았어서 (뭔생각으로 15초로 써놓았던거냐.. 이거저거 실행시키고 더미값으로 회원가입하고 난뒤 이미 15초는 훌쩍 넘김;;) 만료시간을 늘려줌
    • 실제 프로젝트에서는 더 자세히 어떤 부분에 토큰을 쓰고, 리프레시 토큰, 어떤 api를 짤건지, 또 클라에서는 응답에 따라 상태 관리를 어디서 해줄건지, history.push 설정 등 디테일이 더 넘치겠다, 미리미리 공부해야할듯(래봤자 이번주까지)

느낀점

  • 걱정보다는 설렘으로,
    이제는 빼도박도 못한다 무조건 플젝이다! 마지막 ha 잘 마무리하고, 원하는 걸 만드는 구현의 기쁨을 눈코뜰새 없을 플젝 중에도 잊지 않았으면 좋겠다
  • 체크포인트 문제 중 "취약하고 복잡한 배포과정은 자동화를 해도 역시 자동으로 이루어진 취약하고 복잡한 배포"일 뿐이라는 틀린보기가 인상깊었다
    자동화는 좀더 편하고 싶은-반복을 싫어하는- 개발자들의 노오력의 산물일뿐, 코드에 대한 고민을 덜어주는 것이 아니라는 것을. (단, 휴먼에러방지, 시간절약의 장점은 분명함)
  • 장기적으로 볼때, CS공부의 필요성은 더 말할 것도 없는 부분이지만, 배포부분에서 더욱 체감하게 된다, + 재미도, 에러에 대한 가설을 세우고 스스로 검증, 해결했을 때의 성취감!
  • 같은 개발자가 아닌, it 외 업계의 사람에게도 코드를 설명한다는 것_ 똑바로 잘 알고 있는 것이 첫째지만, 지금의 일반인(?)과 가까운 표현, 비유, 느낌을 기억하는 것도 강점이 될 수 있겠다. 기록의 생활화 + 말로 설명하기
  • 흥미돋는 아이디어, 역시 중요해 ㅡ 팀원 모두가 힘들더라도 몰입해서 즐겁게 매달릴 수 있는 관심있는 주제로 정해졌으면.
  • 완벽하진 않아도, 스스로에게 부끄럽지 않은 6주였다, 셀프 토닥,
    후회보단 후련함으로 돌아볼 수 있게 프로젝트 기간도 잘하자

내일은

  • 마지막 ha의 시작 (누구맘대로 마지막이래, 통과해야 마지막이지;)
  • 배포자동화 환경변수 - 찐막 페어
  • amoo 토큰 구현
profile
생각하는 사람

0개의 댓글