
JWT가 등장하게 된 배경 초기의 웹 서비스에서는 사용자가 로그인하면 서버가 사용자 정보를 세션에 저장하고 클라이언트에게는 세션 ID를 쿠키에 담아 전달해 인증 상태를 유지했습니다. 하지만 최근 들어MSA 아키텍처의 도입프론트엔드와 백엔드 서버의 분리모바일 앱 및 다양한 디바이스의 등장으로 인해 API 서버가 여러 클라이언트의 요청을 받아야 하는 환경이 되었습니다. 결국 서버가 인증 상태를 관리하지 않고 매 요청마다 독립적으로 인증할 수 있는 Stateless한 방식이 필요해졌습니다.이 문제를 해결하기 위해 등장한 것이 바로 JWT(Json Web Token) 입니다. 세션(Session) 동작 원리 사용자가 로그인하면 서버는 세션 ID를 생성하고 세션 DB(또는 Redis)에 사용자 정보를 저장합..

서론 사용자가 많아져 서비스가 커질수록 다수의 트랜잭션이 동시에 실행되는 상황에서 컨트롤하는 건 쉽지 않아 질 것입니다.그럼 저희는 성능과 데이터 일관성 사이에서 끊임 없는 트레이드 오프를 하게 될 것입니다. 예를 들어,커머스 도메인에 상품 재고는 1개인데 2명의 사용자가 같은 상품을 주문하려고 하면 어떻게 될까요?상식적으로 생각하면 1명은 구매 성공, 1명은 구매 실패일 것입니다.하지만 재고는 -1개에다가 2명이 모두 주문이 되는 이상한 현상이 나타날 것입니다. 이 문제를 해결하기 위해 LOCK 에 대해 알아보려고 합니다. LOCK은 무엇인가? DB에서의 락(LOCK)은 여러 사용자가 동시에 같은 데이터에 접근할 때 데이터의 일관성과 무결성을 유지하는 즉, 동시성 제어를 위해 사용하는 필수적인 기술..

트랜잭션이란? 영어로는 Transaction이라고 합니다.사전적 의미로는 거래, 매매, 처리(과정) 이라는 뜻을 가집니다.IT 분야의 개념으로는 "하나의 작업을 수행하기 위해 필요한 DB의 연산들을 모아놓은 것으로 DB에서 논리적인 작업의 단위" 라고 말합니다. RollBack트랜잭션 중 오류가 발생하면, 지금까지 진행 된 작업은 전부 취소하고 DB 데이터를 이전 상태로 되돌립니다.Commit트랜잭션 내 모든 작업이 정상적으로 완료되었음을 DB에 알리고, 변경사항을 DB에 영구 저장합니다. 예시) 쇼핑몰에서 고객이 상품을 주문하면?주문 저장결제재고 차감포인트 적립실패하면 전체 작업이 무효가 되어야 하고 주문이 성공하면 모든 작업이 DB에 저장됩니다. 트랜잭션의 4가지 속성 ACIDAtomicity..

왜 STOMP를 써야할까? Simple Text Oriented Messaging Protocol의 약자입니다.WebSocket는 단순히 클라이언트, 서버 양방향 통신을 열어줄 뿐이지만 STOMP는 메시지 구조나 목적지 개념을 가지고 있습니다.그래서 메시지를 전송(Publish) 하면 브로커가 중개하여 목적지(Destination)에 구독(Subscribe)한 여러 클라이언트에게 전달합니다.실시간 채팅, 알림 시스템에 적합합니다. STOMP PUB/SUB 메시지 흐름 이해하기 이미지로 이해하기텍스트로 이해하기웹소켓 클라이언트(사용자 및 서버)가 메시지를 전송한다.서버는 메시지를 Request Channel로 보낸다.(임의로) /app/** 으로 시작하는 경로면 정의 해둔 스프링의 컨트롤러가 호출된다..

문제 계단 오르기 게임은 아래와 같은 규칙이 있습니다. 계단은 한 번에 한 계단 또는 두 계단씩 오를 수 있다.연속된 세개의 계단을 모두 밟아서는 안된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단은 반드시 밟아야한다. 출처 : https://www.acmicpc.net/problem/2579 입, 출력입력첫째 줄에 계단의 개수(N)가 주어집니다.둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 점수가 부여됩니다.계단의 개수 N개는 300이하이고, 계단에 쓰여 있는 점수는 10,000이하입니다. 출력계단 오르기 게임에서 얻을 수 있는 총 점수의 최댓값을 출력합니다. // 입력6102015251020// 출력75 풀이 (설명) 최댓값 공식 찾기한 계단 또는 두 계..

들어가기전 아주 간단 용어 설명 컴파일 : 프로그래밍 언어로 작성한 소스코드를 중간언어인 바이트(바이너리)코드로 변환하는 작업바이트(바이너리) 코드 : 프로그램 실행을 위한 0과 1로 이루어진 표현법JVM : Java Virtual Machine의 약자로 자바 가상 머신으로 물리적으로 존재하지 않은 가상 검퓨터JVM 실행 : JVM 프로세스가 운영체제에서 생성되고, Java 어플리케이션을 실행할 준비 완료 왜 JVM이 등장 했을까?문제) 각 운영체제에 맞춰 컴파일하는 불편함Window로 C언어를 컴파일 한 것을 Mac 또는 Linux는 해당 컴파일 소스파일을 해석을 못하는 문제가 발생하였습니다.즉, 배포된 환경의 운영체제와 아키텍처를 맞춰 컴파일했어야 했습니다. 해결) 혜성같이 등장각 운영체제에 다..

들어가기 전 도메인 구매는 작성하지 않으니 가비아에서 도메인을 구매하고 오시면 빠른 작업이 됩니다. 목차 문제 상황 발생원인 파악AWS EC2 API 서버에 도메인 적용하기NginX를 이용해 SSL 적용하기프록시 서버 설정하기Mixed Content 에러랑 헤어지기 문제 상황 Front 서버와 API 서버를 각각 배포하고 나면 CORS 처럼 꼭 한번은 경험하는 에러일 것입니다.Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure resource 'http://...'. This request has been blocked; the content must be served over HTTP..

목차 GitHub Action 주요 용어 정리왜 self hosted를 이용했을까?Runner 설치 하는 방법워크플로우(workflows) 작성배포 쉘 스크립트근데 왜 스프링이 계속 죽을까?해결 방법 GitHub Action 주요 용어 정리 공식 문서 : https://docs.github.com/ko/actions/about-github-actions/understanding-github-actions GitHub Actions 이해 - GitHub DocsGitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(연속 통합 및 지속적인 업데이트) 플랫폼입니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드 및 테스트하거나 병합된docs.github.com Even..

정상인 상황 SSH로 서버에 직접 접속해서 Spring Boot 3.3.2 버전을 jar로 빌드하는 것은 정상SSH로 서버에 직접 접속해서 배포 쉘 스크립트 실행하는 것도 정상(스프링 기동 죽이기 → 프로젝트 빌드 → 스프링 백그라운드로 기동) 문제 상황 GitHub Action을 이용해서 파이프 라인을 구성하고 배포를 진행하는데 빌드가 안되어서 무한 로딩, 서버에 접근도 못하는 현상 발생GitHub Action을 이용해서 배포 쉘 스크립트를 실행 시켰지만 빌드가 무한 로딩이 되며, 서버에 접근도 못하는 현상 발생 문제 해결 방법 스왑 메모리! 1. 스왑 파일 만들기# 1sudo dd if=/dev/zero of=/swapfile bs=1M count=2048# 2sudo dd if=/de..

개발 환경 MacOS Sonoma 14.6.1Window11ubuntu 24.04 MacOS 환경 변수 설정하기 터미널을 실행하고 그 안에서 명령어를 차례차례 쳐보기를 추천합니다. 1. MacOS의 기본 셀 확인/bin/zsh 이면 Z Shell이며, /bin/bash Bash Shell 입니다.echo $SHELL# 출력 : /bin/zsh 또는 /bin/bash 2. 구성 파일 오픈Z Shell 이면 zshrc., Bash Shell이면 bashrc 파일을 사용합니다.vi ~/.zshrc 또는 vi ~/.bashrc# VI 편집기로 로컬컴퓨터 Mac에서 접속 3. 환경 변수 추가i 를 눌러 입력 모드로 변경합니다.# export [환경 변수 명]=[환경 변수 값]# 예시)export DB_PAS..
- Total
- Today
- Yesterday
- 네트워크
- 실시간 채팅
- 디자인패턴
- AJAX
- Fetch
- 개발자
- 계단 오르기
- 트랜잭션
- 로그
- 오라클
- 깃허브 액션
- 개발블로그
- 코딩테스트
- Spring Security
- Cors
- 프론트
- 비동기
- spring
- jvm
- 개발
- JavaScript
- 프로세스
- DBeaver
- Front
- 데이터 베이스
- 개발환경
- 인증
- java
- aws
- 템플릿
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |