항해 3기 9주차 WIL 2021.11.08~2021.11.14

2957 단어 항해993기3기

2021.11.08

기존에 생각하고 거의 합의를 봤다고 생각하던 access token, refresh token을 하기위해서 프론트도 변경을 해야하는 부분이 당연히 있어서 프론트 분들한테 말했더니 일단 보류로 넘어가고 나중에 말해보자로 바뀌어서 access token과 refresh token을 이용하는 것을 보류했다. 서버에 api를 한번 더 요청하는것과 서버에서 db를 한번 더 조회하는것 중 뭐가 더 효율적인지를 봤을때 나는 당연히 서버에서 DB조회 한번 더 하는 것을 택할 것 같다.

Promise.All을 사용해서 서로 의존하지 않는 쿼리를 병렬처리로 해서 성능을 끌어올렸다.
이걸 통해서 꽤 많은 시간을 단축시킬 수 있었는데 await가 한 5~6개 있던 함수는 20ms정도 빨라진 것 같다.

2021.11.09

모든 페이지에서 api 요청으로 로그인 상태를 유지하다보니 새로고침할때마다 로그인 버튼이 잠깐씩 보이는 이슈가 있다.

젠킨스를 이용한 ci/cd 에서 gitignore로 config 파일과 .env 파일을 숨겨놨더니 테스트 코드를 진행하던 중 config와 .env를 연결할 일이 있어서 오류가 났다. 해결방안으로는 config에 있던 부분을 .env로 옮기고(db정보) .env에 있던 변수들은 젠킨스에서 환경변수로 설정해주어서 사용을 했더니 결과적으로 성공을 했다.

성공후 조금씩 서버가 터지는 경향을 보이더니 결국 502에러와 504에러가 계속뜨는중이다. 원인을 찾아봐야될 것 같다.
원인을 어느정도는 찾은것 같은데
이부분에서

else if(unsortedPosts[0].multiId === posts_id){
	break;
}

이부분에서 === 이 문제였다. req.params의 경우 문자열로 오는데, int 타입과 string 타입을 비교하다 보니 if문에서는 ==으로 비교하다보니 multiId가 1이고 posts_id가 1일경우에는 if문을 빠져나가지만 unsortedPosts의 길이는 1이기때문에 while문은 탈출을 못하고 else if문에 맞지않아 break가 되지 않는 경우라서 무한루프가 돌고 있는 상태라서 문제 해결을 위해서 ===을 ==으로 바꿨다.

2021.11.10

nginx 서버를 하나 더 만들어서 프론트와 백엔드 서버를 이어주는 서버를 하나 만들었다. 프론트엔드에서 백엔드 서버가 아닌 중개서버로 바라보면서 백엔드 서버의 주소를 모르게 하기 위해서 만들어준 서버로 기능은 그냥 프록시기능밖에는 없는 서버로 만들었다.
nginx.conf에서 proxy pass만 백엔드서버 주소로 바라보게하였고 아직은 설정에 대해서 명확하지 않은 부분이 있어서 서버에서 할지, 백엔드 proxy에서 할지, 중개서버 proxy에서 할지 정하지 않아서 기본설정만 되어있는 상태다.

처음에 nginx설정을 똑같이했으나 404에러가 계속해서 났었는데, 이부분은

sudo service nginx reload

로 했던 재시작을

sudo systemctl reload nginx

로 바꿧더니 해결됐다.
아마도 OS상에서의 어떤 차이가 이부분에서 다른 결과를 일으킨 것 같다.

2021.11.12

이틀간 주석작업 및 라이브러리 정리를 했다.
당장 내일이 중간발표다 보니 사용한 라이브러리들과 기술스택에 대해서 조금 더 신중히 정리를 했다. 왜 사용하는지, 어떻게 사용하는지, 이걸 사용함으로써 얻는 이득은 무엇인지 등을 생각하면서 정리를 했고 주석또한 한줄한줄 주석처리를 해가면서 처음 본 사람도 코드만 봐도 이해할 수 있도록 하려고 노력했다. 단순작업이라 조금 고되긴 했지만 나름대로 좋은 결과물을 얻은 것 같다.

주석작업 예시

기술스택 및 라이브러리 정리 예시

2021.11.13

중간발표를 했다.
생각보다 우리가 의도했던 TDD와 성능개선에 대해서는 별다른 피드백을 못받았고 아키텍쳐중 nginx에 대해서만 피드백 받았던 것 같다. 일단 중개서버를 둔 것에 대해서 백엔드 비즈니스 로직이 돌아가는 서버를 퍼블릭으로 두었냐, 프라이빗으로 두었냐를 물어봐서 저희는 현재 이러이러하게 두었다. 라고 하자 퍼블릭으로 두었다고 말씀하시면서 vpc나 이런걸 조절해서 프라이빗하게 하라고 말씀하셨다.

그리고 ec2 안에서 포트를 나눈 이유를 성능향상이라고 했지만 향상되었다는 구체적인 증거가 필요하고 이때 cpu점유율만 보는게 아니라 네트워크 점유율도 봐야한다고 했다.

생각보다 피드백 자체는 현재 상황에서 개선해야할 점을 지적해주시긴 했지만 우리가 원하던 TDD와 서버성능개선에 대해서는 말씀하지 않으셨고 질문, 피드백 자체도 너무 짧아서 아쉬웠던 중간발표였다.

2021.11.14

타입스크립트 공부중...
타입스크립트로 express 서버를 만들어보려고 하는데 설정이 굉장히 어렵다... 오늘안에 할수있을까..

좋은 웹페이지 즐겨찾기