본문 바로가기

전체 글

(42)
모니터링 with Docker 1. 문제 정의 컨테이너로 어플리케이션을 관리하면 다음과 같은 장점이 있습니다. 게시글 링크하기 “전투에서 실패한 지휘관은 용서할 수 있지만 경계에서 실패하는 지휘관은 용서할 수 없다”는 말이 있습니다. 이 말을 서비스를 운영하는 개발자에게 비춰 보면 장애는 언제든지 발생할 수 있더라도 그만큼 모니터링을 잘 해야 한다는 뜻입니다. 김영한님 스프링 강의 중 기존에는 EC2에 직접 Grafana와 Loki를 설치하였으나, 이번 포스팅에서는 컨테이너로 Loki, Grafana, Promtail을 관리하는 방법을 알아보도록 하겠습니다. 2. 로그 관리 현재 프로젝트에서 스프링 설정은 application.yml로 관리하고 있습니다. yml 설정에서 로그를 어디에 저장할 지 설정해보도록 하겠습니다. logging..
JWT Token + Refresh Token 1. 문제 정의 기존의 세션 로그인 방식에서 벗어나서, JWT를 활용한 로그인 방식으로 변경하였습니다. 변경하게 된 이유로는, refresh token을 사용한 자동 로그인을 학습해보기 위해서 도입하였습니다. 2. JWT 로그인 플로우 JWT와 카카오 OAuth2.0 로그인의 플로우를 시퀀스 다이어그램으로 살펴보도록 하겠습니다. refresh token이 있는지 확인합니다. refresh token이 만료됐거나 없는 경우, 카카오 로그인을 진행합니다. 카카오 서버로부터, 사용자 정보에 대한 access token을 발급받습니다. access token 내부에 있는 사용자의 카카오 ID가 연세골프 DB에 저장되었는지 확인합니다. DB에 없을 경우 401 에러를 반환하고, 로그인 페이지로 리다이렉트 합니다...
CloudFront, S3 배포 자동화 1. 문제 정의 지난 포스팅(링크)를 통해 CloudFront, S3, Route53을 통한 Vue 프로젝트를 배포하는 방법에 대해서 알아보았습니다. 하지만, 프로젝트를 진행할 수록 배포해야 하는 횟수가 늘어나게 되었고, 수동으로 배포하는 방식은 개발 시간 지연에 큰 영향을 미치고 있습니다. 이번 포스팅에서는 GitHub Action을 활용한 프로젝트 배포 자동화에 대해 알아보도록 하겠습니다. 2. GitHub Actions 우선 배포 코드부터 알아보도록 하겠습니다. name: Deploy to CloudFront // dev 브랜치에 push될 경우 github action이 실행됩니다. on: push: branches: [ "dev" ] jobs: deploy: runs-on: ubuntu-late..