온프레미스 서버에 Kamal로 무중단 배포 도입하기
들어가며 저는 요즘 업무용 SaaS(백엔드 10개, 웹 7개, 소개 사이트 6개)를 거의 혼자 만들고 운영하고 있습니다. 서버는 온프레미스 서버 한 대이고, 이 한 대에서 dev, prd, GitHub Actions self-hosted runner가 함께 돌고 있습니다. 배포는 지금까지 아래처럼 하고 있었습니다. GitHub Actions...
들어가며 저는 요즘 업무용 SaaS(백엔드 10개, 웹 7개, 소개 사이트 6개)를 거의 혼자 만들고 운영하고 있습니다. 서버는 온프레미스 서버 한 대이고, 이 한 대에서 dev, prd, GitHub Actions self-hosted runner가 함께 돌고 있습니다. 배포는 지금까지 아래처럼 하고 있었습니다. GitHub Actions...
들어가며 요즘 서비스 배포 방식을 Kamal 무중단 배포로 바꾸고 있습니다. (온프레미스 서버에 Kamal로 무중단 배포 도입하기) 무중단 배포는 새 컨테이너를 먼저 띄우고, 준비되면 트래픽을 넘긴 뒤 옛 컨테이너를 내리는 방식입니다. 그래서 배포하는 동안에는 같은 서비스가 잠깐 두 개 떠 있게 됩니다. API 서버라면 아무 문제가 없는데, 예약 ...
올해 토스 컨퍼런스에 이어 당근 테크 밋업까지 당첨이 되서 다녀오게 됐다! 🕺🏻 발표 세션과 네트워킹 세션이 함께 진행 됐고, 난 두 네트워킹 세션에 참여했다. 타임테이블 🕐 흥미로웠던 주제 1️⃣ 당근 알바 초기 엔지니어링 전략: 빠르게, 빠르게 더 빠르게 by 박용진님 초기에 정말 빠르게 제품을 개발하며 동시에 분석을 해야 되...
개요 서버 개발을 하다보면 Batch 작업을 언젠가 무조건 하게 된다. 이때 수많은 아래와 같은 수 많은 선택지를 마주하게 된다. 1️⃣ Spring Batch 사용 사례 엔터프라이즈 수준의 배치 처리 특징 트랜잭션 관리, 재시도 및 오류 처리, 청크 기반 처리, 다양한 데이터 소스와의 통합, 스케줄링 기능 2️⃣ Apache Spark ...
나도 Lucky Biki 하게 토스 컨퍼런스 당첨 됐다! 타임테이블 🕐 나는 서버 개발자임으로 당연히 서버 파트 발표에 구독 버튼을 씨게 눌렀다. 흥미로웠던 주제 서버 파트 발표들을 들으면서 개인적으로 흥미롭다고 느끼는 주제들과 느낀점을 나열해보겠다. 1️⃣ 리플레이 검증으로 새로운 금융 시스템 안전하게 도입하기 by 양승...
배경 백엔드 서버 A, 백엔드 서버 B 등 여러 Spring Boot 서버들이 있다. 이 중 Auth 서버만 회원에 대한 토큰을 주는 회원가입, 로그인 등에 처리를 한다. 나머지 서버들은 토큰을 가지고 Token Filter를 통해 인증과 인가를 한다. 그리고 모든 요청은 API Gateway를 거쳐 서버에 전달된다. 이 상황에서 요구사항은 “...
개요 Kong API Gateway는 여러 기본 plugin들을 제공한다. 하지만 내 요구사항에 알맞는 plugin을 만들어야 할때도 있는데 이때 Kong에서는 custom plugin을 넣을 수 있게 되어 있다. Custom plugin은 기본적으로 Lua script로 작성할 수 있지만 Go, Java 등 다른 언어들로도 작성 가능하다. (물론...
개요 여러 API 서버들이 존재할 때 이를 편하게 관리하기 위해서는 여러대의 Nginx 같은 reverse proxy를 두는거 보다 하나의 API Gateway로 들어오는 모든 Client 요청들을 관리하는게 편하다. 특히 MSA 같은 환경을 구성할때 API Gateway는 필수 요소다. Kong, KrakenD, SCG 등 여러 API Gatew...
개요 암호화 종류는 크게 단방향과 양방향으로 나뉜다. 양방향은 암호화 한 다음 다시 평문으로 복구가 가능한 암호화 방식이고, 단방향은 암호화 한 뒤 다음 다시 평문으로 복구가 불가능하다. 그래서 ISMS 같은 보안 인증을 받을때 비밀번호와 같은 민감한 개인정보는 무조건 단방향 암호화 대상이다. 그럼 이제 무중단 서비스에서 SHA256으로 데이터...
개요 동시성 문제를 해결할 수 있는 방법은 여러가지가 있다. Java의 synchronized 키워드, Optimistic Lock, Pessimistic Lock 등이 있다. 하지만 이미 여러 서버 node들이 존재하고 이미 한대 이상의 Redis 노드가 있다면 Redisson Lock을 사용하는게 대부분 속도, 성능을 고려했을때 최적의 선택지다....