전체 글 썸네일형 리스트형 AWS CLI: describe-rules --listener-arn 블루 그린 배포를 위해 GitHub Actions yaml을 작성하던 중 로드밸런서의 현재 대상그룹 ARN 값이 필요하게 되었다.ALB Listener arn은 깃헙 시크릿으로 전달받아 알 수 있기에 describe-rules을 사용하면 될 것 같다.aws elbv2 describe-rules --listener-arn { "Rules": [ { "RuleArn": "", "Priority": "default", "Conditions": [], "Actions": [ { "Type": "forward", "Order.. 더보기 Blue-Green Deployment (기본) Blue-Green Deployment를 사용하기로 했다면, 사용자의 트래픽을 Blue 또는 Green 중 어느 환경으로 보낼지 결정하는 로드 밸런서(Load Balancer) 가 필요하다.가장 단순한 구성은 다음과 같다:LB (로드 밸런서)Blue 서버Green 서버즉, 총 3개의 서버가 필요하다.서비스 도메인(mysite.com)의 트래픽이 로드 밸런서로 들어가야 하므로,도메인의 A 레코드를 LB 서버의 IP 주소로 설정해두면 된다.(단, 아래의 AWS ALB 사용 시에는 IP가 아닌 DNS 이름을 사용해야 함)AWS ALB(Application Load Balancer)ALB는 고정 IP를 가지지 않고 동적으로 IP를 바꾸며 동작한다. 따라서 서비스 도메인의 A레코드로 ALB의 IP주소를 직접 지정.. 더보기 무중단 배포(Zero-Downtime Deployment) 애플리케이션을 배포할 때, 기존 애플리케이션을 종료시키고 새로운 애플리케이션을 실행하기까지 애플리케이션이 종료된다.기존 애플리케이션을 종료시키고 새로운 애플리케이션을 시작하기 전까지의 시간을 다운타임이라고 한다.다운타임을 없애기 위해 무중단 배포라는 방법이 존재한다.무중단 배포 시, 기존 요청은 처리하고, 새 요청은 새 애플리케이션으로 연결되도록 만드는 것이다.Blue-Green DeploymentBlue(현재)와 Green(새 버전) 두 개의 서버 환경을 두고, 트래픽을 한 번에 전환장점: 빠른 롤백 가능단점: 서버 두 대 필요(서버 1대에서도 유사한 방법으로 가능하고, 이 경우 서버 프로세스 2개를 띄워서 nginx가 LB역할을 수행)Rolling Deployment서버 여러 대 중 하나씩 교체하면서.. 더보기 스프링 JWT(3): JWTFilter 이번에는 발급받은 JWT를 검증하는 필터인 JWTFilter와 리프레시 토큰을 이용한 토큰 갱신을 구현해보자.저번 글에서 구현한 JWTUtil을 이용해 토큰을 검증할 것이다. @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String auth = request.getHeader("Authorization"); //토큰이 없는경우 if (auth == null || !auth.startsWith("Bearer.. 더보기 스프링 JWT(2): JWTUtil & LoginFilter 앞서, 스프링 시큐리티에서 JSESSION기반 로그인을 처리하는 과정에 대해 간단히 알아보자. 1. 클라이언트의 로그인 요청POST /login HTTP/1.1Host: example.comContent-Type: application/x-www-form-urlencodedusername=user&password=password1232. 서버의 응답HTTP/1.1 302 FoundLocation: /homeSet-Cookie: JSESSIONID=1234567890abcdef; Path=/; HttpOnly로그인 성공 시 서버는 클라이언트로 세션ID를 반환해주고, 서버에 인증정보를 저장해 관리하게 된다. 과정을 조금 더 자세히 보면 다음과 같다.로그인 요청-> UsernamePasswordAuthent.. 더보기 [백준] 1395 스위치 이번에도 세그먼트 트리 문제다. 다만 그냥 세그먼트 트리를 사용할 경우, 구간 업데이트에 너무 많은 시간이 걸려 TLE 이므로 조금 다른 방식이 필요하다.세그먼트 트리를 이용한 TLE코드#include using namespace std;int N, M;int seg[100'000 > N >> M; int a, b, c; for (int i = 0; i > a >> b >> c; if (a == 0) { update(1, 1, N, b, c); } else { cout 시간초과를 해결하기 위해서는 구간 업데이트에 사용되는 시간을 줄여야하는데 이때 사용되는 것이 lazy propagation(느.. 더보기 [백준] 1725 히스토그램 세그먼트 트리를 사용하는 문제이다.어려워보이는 자료구조라 나중으로 미루다가 결국 하게되었는데.. 유튜브에 마음에 드는 강의가 딱히 없어서 그냥 요세푸스 문제2 해답코드를 여러개 뜯어보면서 공부했다.요세푸스 문제나 구간합 문제 등 세그먼트 트리가 사용된 코드는 비슷한 부분이 많은 것 같은데 아직 완벽하게 이해하지는 못해서 몇 문제는 더 풀어보고 다뤄볼까 싶다.init():세그먼트 트리 초기화query():연산 수행update():필요한 경우 트리 업데이트위 세가지가 공통적으로 사용되고 동작방식도 비슷한 부분이 많다.(문제 해설은 주석참고)#include using namespace std;using ll = long long;#define INF 2'100'000'000int N;int seg[1 부모노.. 더보기 [백준] 2252 줄 세우기 위상정렬 을 이용하는 문제였다. 태그를 보고 풀었는데 위상정렬을 몰라 알고리즘만 보고 바로 풀어봤는데 입력을 어떻게 받을 지가 고민이었다.정점 v1에서 연결되어있는 다른 정점으로의 간선의 개수를 진출차수라고 하며,다른 정점에서 v1으로 연결되어있는 간선의 개수를 진입차수라고 한다.위상정렬은 순서가 정해진 정점들의 순서를 구하는 알고리즘으로, 동작과정은 다음과 같다.진입차수가 0인 정점을 모두 큐에 PUSH큐에서 정점을 하나 POP하고 그 정점에서 진출하는 모든 간선을 제거한다.(연결 된 정점의 진입차수 1씩 감소)제거 한 후, 진입차수가 0이 된 정점이 있다면, 큐에 PUSH큐가 빌 때 까지 반복한다.처음엔 입력과 진입차수가 0이 된 정점을 큐에 넣는 구현을 어떻게 해야할 지 모르겠어서 그냥 for문으로.. 더보기 이전 1 2 3 다음