최근에 테스트 코드를 조금씩 작성하기 시작했다. 자연스레 CICD 파이프라인에도 test를 추가함으로써 build-test-deploy 구조가 완성되었다. 그런데 문뜩 '테스트 통과 못하면 main branch에 merge 되면 안되지 않나?'라는 생각이 들었고 테스트
TalkGG 프로젝트 진행하면서 테이블 설계가 중간에 바뀌었었다. 게시물 테이블과 관련된 이슈였고 게시물과 관련된 테이블들이 비효율적으로 설계된 것 같아 테이블을 통합하는 작업이었다. 하면서 느낀 건데 데이터 중복이 많은 것도 문제인데 마냥 테이블을 잘게 분해시키는 것도 큰 문제가 될 수 있을 것 같다. 상황에 따라 분해도 하고 통합도 하고 유연하게 대처하...
진행하고 있었던 음성 채팅 프로젝트가 끝이 났다.굵직한 기능은 모두 구현했지만 아직 디테일을 다듬어야 하는데 SQL 튜닝도 그 중 하나라고 생각해서 도전해보았다.이것저것 수정하는 작업을 반복했는데, 여간 쉬운 작업이 아니었다. 이게 단순히 수행 속도만 빠르게 하면 되는
프로젝트에는 카카오 로그인과 네이버 로그인 둘 다 구현했는데, 둘 다 흐름이 매우 비슷해서 네이버 로그인만 정리해도 될 것 같다. node.js 진영에서는 인증 구현할 때 passport 라이브러리를 굉장히 많이 쓴다고 들었는데,
📃 프로젝트 정보 서비스명: 게이머들의 음성 채팅 커뮤니티 TalkGG 주제: 게이머간의 자유로운 목표: 게임을 함께 하고 싶은 유저 간의 커뮤니티 서비스 및 음성(+텍스트) 채팅 서비스 제공 서비스 URL 👪 팀원 팀원 : 프론트엔드(1명), 백엔드(1명)
유튜브를 둘러보다가 'Redis 야무지게 사용하기'라는 영상을 보게 되었다.NHN FORWARD 2021 Redis 야무지게 사용하기영상을 본지는 꽤 오래되었다. 영상 앞 부분에서 설명해주신 캐싱 읽기 전략을 직접 구현해보고 싶었는데, 이제서야 프로젝트에 적용하게 되었
레디스를 어떻게 사용해볼까 생각해보다 좋아요, 세션, 캐시 용도로 사용하면 좋을 것 같아서 레디스 클라우드에서 제공해주는 무료 서버를 파서 사용했다. 사용하다보니 몇가지 비효율적인 부분이 생겼다. 레디스 클라우드와 커넥션할 때 굉장히 자주 타임 아웃이 발생하였다.
로드밸런싱 작업을 마치고 한동안 문제가 없다가특정 API에 접근만 하면 CORS 에러가 발생하였다.아직도 원인을 못 찾았는데 나름 해결은 해서 뭔가 찜찜하다.credential은 쿠키, Authorization 헤더, TLS 증명서와 같은 자격 인증 정보를 말하는데,
쉽지 않을 줄 알았는데 개쩌는 nginx로 여차저차 하다보니 됐다.nginx docs 많이 파봐야겠다.docker container 2개를 띄우기 위해 기존의 workflow를 수정한다.같은 이미지를 3000번과 3001번 포트로 열여줬다.upstream 컨텍스트에 요
로드밸런싱에 도전하기 위해 리버스 프록시 환경을 만들게 되었다.성공하는데 오랜 시간이 걸리진 않았지만 설정 자체도 낯설고 중간 중간 에러도 발생해서해결하느라 애를 좀 썼다.우선 외부 파일을 만들어서 서버 설정을 작성하고 nginx.conf에 include 하는 방식으로
이전에 CICD 구축했을 때 아무런 문제 없이 애플리케이션 실행이 잘 되었었다. 그런데 어떤 것이 바뀌었는지 모르겠는데 어느 순간부터 http 접속이 안되기 시작했다. 인바운드 규칙에서 포트 열었다 닫았다 반복하고 docker 호스트 포트도 80으로 했다가 3000으로
우분투 환경에서 DOCKER 컨테이너 실행 시 permission denied while trying to connect to the Docker daemon socket 에러 발생daemon socker에 접근할 권한이 없음. 명령어 앞에 sudo 명령어를 붙여 ro
코드 작성할 때마다 자꾸 여기 만졌다가 저기 만졌다가 하는 경우가 많아져서 아예 작성 순서를 정해놓는 게 좋을 것 같다. 물론 무조건 작성 순서에 따르는 건 아니지만 어느정도 폼을 잡아 놓고 작성하면 코드 작성 효율이 좋아지지 않을까 하는 마음이다. 기술, 인프라 세
서버 scale-out 시 세션 불일치 문제가 발생하기 마련이다.sticky 세션이나 클러스터 세션 등 여러 방법으로 해결할 수 있지만세션 스토리지로 세션들을 관리하는 것이 가장 좋은 방법인 것 같다.물론 모든 것에는 트레이드 오프가 있듯이 세션 스토리지 서버가 다운되
현재 nest.js로 프로젝트를 진행하고 있는데, 타입스크립트에 익숙하지 않아서 타입 지정해주는데에 많은 시간을 쏟고 있다. 이왕 타입스크립트 쓰는 김에 타입 먹일 수 있는 곳에는 다 먹이려고 하는데 쉽지가 않다.아무튼 며칠 전부터 메소드 리턴 타입 지정에 꽂혀서 어떻
클라이언트로 받은 비밀번호가 DB에 저장된 비밀번호와 일치하는 지 확인하기 위해 bcrypt.compare() 메소드 사용했으나 비밀번호가 일치해도 false를 리턴DB의 password 컬럼의 자료형 길이보다 bcrypt로 해싱한 문자열의 길이가 길어 일정 부분 짤려
이전부터 CICD를 너무나도 해보고 싶었는데 이런 저런 일로 못하고 있다가 감사하게도 좋은 포스팅들을 발견하여 어렵지 않게 성공 할 수 있었다. 사실 어려운 개념은 아닌 것 같다. 흐름을 한 번 이해하니 자연스레 스탭 바이 스탭으로 어떤 것을 해야할 지 감이 잡혔다.
엘리스 부트 캠프에서의 마지막 프로젝트가 끝났다. 반년동안 별일없이 마무리 되어서 다행이다. 이번 프로젝트는 인공지능 프로젝트로 인공지능 모델을 이용한 기능이 필수였다. 처음 다뤄보는 거라 러닝커브가 어느정도 되는 지 확실하지도 않아서 백엔드와 관련된 추가 기능을
JWT로 인증 구현, JWT, Json web token, Access token, refresh token, 인증, 인가, node.js, express, 로그인, 로그인 구현,