Programming
· Programming
요약 개발환경은 Node.js 기반의 NestJS를 사용하며, AWS EC2 인스턴스에서 작업하고 있다. 이 프로젝트에서는 Jenkins와 Docker를 활용하여 CI/CD 환경을 구축하였다. AWS EC2 인스턴스에 접속한 후 Docker를 설치 EC2의 메모리 스왑을 설정하여 여유 메모리를 확보 Docker 그룹을 추가하여 권한 문제를 해결 Jenkins를 Docker 이미지로 패키지하여 컨테이너를 실행 Jenkins 컨테이너 내부에 Docker를 설치하여 Docker In Docker 환경을 구축 Jenkins 컨테이너 내부에서 Node.js 프로젝트를 빌드하고 Docker 이미지를 생성 도중에 발생한 문제들로는 프리티어 성능 제약, 네트워크 설정 부족, 빌드 중 서버 다운 등이 있었으나, 이를 해..
· Programming
서론 지난번 포스팅한 Jenkins를 사용하는 글에서 다루었던 내용의 연장선이다. 로컬에서 개발한 서버를 빌드하고 배포하는 과정을 자동화시키기 위한 방법을 공부하고 파이프라인을 만들어 나가는 과정에서의 트러블슈팅에 대해 이야기하고자 한다. 트러블슈팅 지난번에 시도해 본 jenkins 설치방법은 docker를 이용하여 jenkins이미지를 생성하고 이것을 컨테이너화 시켜 ec2에 올려 사용하는 방법이었다. 이렇게 함으로써 aws 프리티어를 사용하여 가뜩이나 부족한 나의 조그마한 성능의 컴퓨터에 jenkins를 깔고 설정해주고 하는 등의 비효율적인 행동을 줄일 수 있다고 판단했다. 하지만 빌드를 하는 과정에서 계속된 오류를 경험하였다. jenkins의 로그를 찾아보니 스크립트에서 작성한 docker명령어를 ..
· Programming
사전적 정의와 개념은 이미 너무나도 좋은 자료가 많으니, 여기서는 나의 언어로 작성하겠다(틀린 게 있어도 오해하지 말고 찾아보기!) 이번 프로젝트를 진행하면서, 기존의 3-layer 계층의 설계가 아닌 클린 아키텍처의 설계를 학습하면서 적용해 보는 노력을 하였다. 프로젝트 초반에 익숙하지 않은 형식의 설계와 완숙하지 못한 Nest 프레임워크 실력에 의존성 오류를 엄청 많이 겪으면서 삽질을 하는 시간이었다. 지금 와서 생각해 보면, 인터페이스의 개념과 사용법을 체득하지 못한 상태여서 기본적인 에러의 원인구조를 빨리 파악하지 못한 듯하다. 이번에 구현하면서 체득한 내가 생각하는 의존성 역전 원칙이란 한마디로, 직접 상속하지 마!이다. 객체지향에서 이야기하는 설계원칙의 핵심은 유연성과 확장성(재활용)이라고 생..
· Programming
요약 이 글은 로그인 기능의 보안을 강화하기 위한 인증과 인가에 대한 개선 방법을 다루고 있다. 기존의 단일 토큰 방식에서의 보안 취약점을 보완하기 위해 두 개의 토큰, 즉 accessToken과 refreshToken을 사용하는 방법을 소개하고 있다. 이를 통해 토큰 탈취 시의 리스크를 줄이기 위해 유효기간을 짧게 설정하고, 사용자 편의성을 유지하기 위해 슬라이딩 세션을 도입하는 방법을 설명하였다. 또한, refreshToken을 서버의 DB 대신에 redis 캐싱을 이용하여 저장함으로써 성능을 향상시키는 방법에 대해서도 언급하고 있다. 마지막으로, 보안성을 강화하기 위해 클라이언트 정보와 함께 refreshToken을 이용하여 새로운 accessToken을 발급하는 방법을 소개하고 있다. 전반적으로 ..
사용자를 연구하는 개발자
'Programming' 카테고리의 글 목록