10 - Nginx를 활용한 무중단 배포 구축기
무중단 배포 배포 과정에서 서버가 일시 중단되는 문제에 대해 생각해 본적이 있는가? 만약, 서비스가 중단된다면 잠깐이지만 크게 3가지 정도의 문제점들이 발생할 수 있다. 실제 운영 환경에서 서비스 중단은 곧 손실 배포나 갑작스러운 장애로 서버가 다운될 경...
무중단 배포 배포 과정에서 서버가 일시 중단되는 문제에 대해 생각해 본적이 있는가? 만약, 서비스가 중단된다면 잠깐이지만 크게 3가지 정도의 문제점들이 발생할 수 있다. 실제 운영 환경에서 서비스 중단은 곧 손실 배포나 갑작스러운 장애로 서버가 다운될 경...
개요 지난 편에서 다뤘던 Access & Refresh Token Flow를 바탕으로 JWT 기반 인증 시스템을 구현하였다. 이번 글에서는 그 구현 내용을 코드 중심으로 간단히 소개하려고 한다.
개요 이전 편에 이어서 Access Token과 Refresh Token의 동작 Flow와 Token 탈취 대응, 로그아웃에 대해서 정리하려고 한다.
워밍업 JWT Token 프로젝트를 진행하면서 많은 어려움과 고민을 안겨다준 AccessToken과 RefreshToken. 서로 상호보완하는 두 토큰을 활용해서 인증/인가 플로우대로 기능 구현한다는 게 참 쉽지 않았던 일이었던 것 같다.
다양한 옵션 중 어떤 기술을 왜 선택했는가? 일반적으로 로그인 구현에서 많이 사용되는 기술은 JWT 토큰 방식이다. 이 방식을 사용하게된 계기는 Session 방식과 비교해서 더 복잡하고 처리해야 될 것들이 많았기 때문이다. 하지만 이것은 구현하기 위한 생각일 뿐이다. 더 중요한 ...
양방향 암호화, 생성 방법 jwt 토큰 암호화를 진행하면서 양방향의 대칭키와 비대칭키 두 가지 방식이 있는데 어떤 걸 사용해야 적합한지 의문점이 생겨 이를 조사해보려고 한다. 그리고 선택한 양방향 키를 어떻게 생성했는지 사용한 방법을 기록하려고 한다.
JWT Token을 사용하기 앞서 JWT 동작 과정을 이해하기 위해서는 ServletFilterChain과 SpringSecurity 구조와 동작 원리에 대해서 학습할 필요가 있다. 따라서 작성한 다이어그램을 바탕으로 학습한 내용을 정리 하려고 한다.
AWS RDS MySQL 현재 AWS EC2 인스턴스를 사용하여 서버를 구동하고 있으며, AWS RDS는 MySQL을 지원하는 관리형 데이터베이스 서비스이다. EC2와 RDS는 동일한 VPC 내 서브넷에서 원활하게 통합되며, 이를 통해 데이터베이스 관리와 운영의 복잡성을 크게 줄일...
CI/CD Workflow
기획 및 설계 CI/CD와 Auth Login 프로젝트 주제는 GitHubActions를 활용한 CI/CD와 SpringSecurity와 JWT를 결합한 인증 시스템이다.
IoC를 탄생 이전에 고충 과거 직접적으로 개발자가 객체를 관리할 때는 여러 가지로 불편함과 문제점들이 한 두가지가 아니었다. 지금부터 그 문제들을 살펴보자
개요 프로젝트 진행 중 역직렬화 과정에서 일부 필드가 “null”로 처리되는 현상이 발생했다. 처음엔 Json, 객체 간 필드명의 불일치로 매핑되지 않는다고 판단했으나, 그게 아니었고 Jackson, Lombok, Java Beans 네이밍 규약에 따른 불일치 문제였다.
개요 MVC 아키텍처와 직렬화/역직렬화 과정을 기반으로, 객체 변환 및 생성의 동작을 학습한다.
Hicoding Groupware 클라우드 기반의 그룹웨어 시스템
소개 객체 설계와 알고리즘 구현을 목표로 해당 게임을 모작하기로 결정하여 만든 이 게임은 2.5D의 로그라이크 장르의 액션 슈팅 인디 게임이다. 깃허브 링크: https://github.com/songbyhyeok/enter-the-gungeon
자바는 객체 주소를 전달하는 방식이다. “Java는 Call by value = Pass by value만 존재한다”란 글을 읽고 여러 가지 면에서 혼란스러웠는데, 이것을 이해/정리 목적 취지로 글을 쓰게 되었다.
서론 “지나가던 길, 근사한 아파트가 눈에 띈다. 스마트폰 어플을 실행하고, 내가 마음에 드는 동과 호수를 선택한다. 그 순간, 그 아파트의 명의가 내 것으로 바뀐다. 마치 프로그램 코드 한 줄로 세상을 조작하는 것처럼, 내가 원하는 대로 모든 것이 변한다. 이건 정말 현실일까?”
Issue 코딩을 하던 중 배열을 매개변수로 사용하는 상황이 생겼다. 배열의 크기를 내부 함수에서 계산하면 된다고 생각하고, 크기를 확인한 후 ‘?’ 떠올랐다. 예상했던 대로라면 10000000 바이트 크기가 나와야 했는데, 결과는 ‘8’이라는 값이 나왔다. 왜 이런 결과가 나온 ...