지난 글에서 Jenkins와 Github Webhooks를 이용하여 배포 자동화하는 방법에 대해 알아 보았다. 이번 글에서는 지금까지 구현한 프로젝트 내용과 Nginx를 이용하여 무중단 배포가 이루어 질 수 있도록 로드밸런싱을 설정하는 방법에 대해서 알아보자. 1. VM 인스턴스 추가 Rolling 배포를 구현하기 위해 서버를 2개이상 두어야 할 필요가 있다. 요구 성능에 따라서 여러개의 서버를 둘 수도 있지만, 서울 region에 서버를 4개를 초과하여 만들 수 없기 때문에 편의상 2개의 인스턴스만 이용해 보도록 하자. 우선 GCP에서, 이전에 생성해 둔 워커 인스턴스와 같은 설정으로 VM 인스턴스를 하나 더 추가하자. 그리고 이전 글에서 했던것 처럼 인스턴스에 SSH로 접속하여 lsof와 java를 ..
지난 글에서 Jenkins에서 VM인스턴스에 SSH로 접속하도록 설정하는 과정을 설명했다. 이번에는 Jenkins와 Github Webhooks를 이용하여 배포를 자동화하는 방법에 대해 알아보자. 프로젝트를 만드는 방법과, Git과 Github를 사용하는 방법에 대해서는 생략하겠다. 1. Jenkins에서 새로운 Item 생성하기 Jenkins의 대시보드에서 새로운 Item을 생성하자. Item의 이름을 입력하고 Freestyle project를 선택하고 OK를 클릭하자. 2. Github와 연동하기 OK를 눌러 Item을 생성하면, 아래와 같은 내용들을 설정할 수 있는 창이 나온다. 또는 Jenkins에서 생성한 Item에서 구성을 클릭하면 위의 내용들을 변경할 수도 있다. 소스 코드 관리에서 Git을..
OAuth 2.0 에서 access token를 얻는 4가지 인증방식중 하나인 Authorization Code Grant 인증방식에 대해 알아보자. Authorization Code Grant 특징 OAuth2.0에서 가장 많이 사용되는 인증방식으로, Access token을 얻기 위해 사용되는 인증방식이다. S2S 방식이기 때문에 백엔드 서버가 있는 서비스에 적용하기 적합한 방식이다. 따라서 클라이언트는 써드파티 서비스의 백엔드 서버이다. client-secret, Access-token과 같은 민감정보가 외부에 노출되지 않아 보안상 안전하다. Authorization Code Grant Flow 인증과정은 어떻게 이루어질까 ? 인증과정을 그림으로 나타내면 다음과 같다. 공식문서를 참고했다. +---..
Spring Security와 OAuth를 이용하여 로그인 기능을 구현하기 위해 OAuth 2.0에 대해 공부해 봤다. 인증과 인가? 인증(authentication) : 사용자의 신원을 확인하는 절차이다. 인가(authorization) : 사용자가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 절차이다. OAuth 2.0 이란 ? OAuth 2.0(Open Authorization 2.0, OAuth2)란 표준 인증 프로토콜이다. Oauth는 인증(authentication)에 대한 프로토콜이다. (인가를 고려한 프로토콜은 아님) Oauth는 사용자의 ID와 비밀번호 없이도 접근 권한을 위임 받을 수 있는 표준 인증 프로토콜이다. Oauth는 다른 웹사이트(구글, 네이..
https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 2022 KAKAO BLIND RECRUITMENT 파괴되지 않은 건물 문제 C++ 풀이입니다. 필요한 배경지식 누적합 참고하면 좋음 : 누적합의 확장, imos법 문제 해결 방법 문제에서 skill을 통해 ..
지난 글에서 GCP VM인스턴스에 Jenkins 설치하는 과정을 설명했다. 젠킨스를 이용하여 빌드/배포를 자동화하기 위해서는 젠킨스가 인스턴스에 접속할 필요가 있다. 인스턴스에 접속할때에는 보안상 젠킨스만 VM인스턴스에 접근할 수 있도록 만들어 주어야 할 필요가 있는데 이때, SSH 접속을 이용하여 해결할 수 있다. 인스턴스에 SSH로 접속하도록 설정하는 방법을 알아보자. 대략적인 방식은 아래와 같다. 먼저 Jenkins에서 비대칭키를 생성하고 공개키를 인스턴스에 등록해 주면, 이후 인스턴스의 공개키는 Jenkins가 개인키로 복호화할 수 있으므로 Jenkins만 인스턴스에 접근할 수 있게 된다. 위의 내용들을 설정해 보자. 1. Jenkins에서 개인키와 공개키쌍 생성하기 젠킨스가 실행된 vm 인스턴스..
https://programmers.co.kr/learn/courses/30/lessons/92343 코딩테스트 연습 - 양과 늑대 [0,0,1,1,1,0,1,0,1,0,1,1] [[0,1],[1,2],[1,4],[0,8],[8,7],[9,10],[9,11],[4,3],[6,5],[4,6],[8,9]] 5 [0,1,0,1,1,0,1,0,0,1,0] [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6],[3,7],[4,8],[6,9],[9,10]] 5 programmers.co.kr 2022 KAKAO BLIND RECRUITMENT 양과 늑대 문제 C++ 풀이입니다. 필요한 배경지식 BFS, 비트마스킹 문제 해결 방법 그래프나 트리문제에서 BFS나 DFS을 풀이방법으로 생각해 볼 수 있는데,..
https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 2022 KAKAO BLIND RECRUITMENT 양궁대회 문제 C++ 풀이입니다. 필요한 배경지식 DFS, 백트래킹, 조합론 문제 해결 방법 문제를 풀면서 고려해야할 사항들이 많지만, 기본적으로 k점을 여러 발 맞혀도 k점 보다 많은 점수를 가져가는 게 아니라 k점만 가져가는 것 그리고 상대보다 한개라도 많이 맞추어야 점수를 획득할 수 있다는 점에 유의해야 한다...