본문 바로가기

2025 Dev Log39

운영체제 중간 필기 보호되어 있는 글 입니다. 2026. 4. 21.
[2][Stage 0] 인터럽트(Interrupt)와 폴링(Polling)의 차이를 CPU 동작 관점에서 설명하라. + 비동기 이벤트 인터럽트(Interrupt)는 실행 중에 새로운 실행 거리가 생긴 상황을 이야기한다. "야 비켜와 CPU야 이거 먼저 처리해라!!" 이렇게 키보드, 네트워크 카드, 디스크가 CPU에게 직접 신호를 보낸다. 그럼 CPU는 1. 하던 일을 멈춘다2. 상태를 저장한다 (레지스터 or 스택)3. 급한 일을 처리한다4. 다시 돌아간다 폴링(Polling)은 다른 개체에서 CPU한테 물어보는 것이 아니라 CPU가 계속 물어보는 것이다. " 얘들아 왔어? 할 일 있어? 없어? 나 그대로 실행한다~" 조금 헷갈린 부분은 인터럽트와 폴링은 “방법”이고,“CPU가 하던 일을 멈추고 외부 사건을 처리해야 하는 상황” 자체를 부르는 용어가 아니었다. 이러한 상황 자체는 이벤트 혹은 비동기 이벤트라고 부른다. 비동기 이벤트,.. 2026. 1. 15.
[1] [Stage 0 (Foundations)]가상 메모리(Virtual Memory)가 무엇이며, 프로세스마다 독립된 주소 공간을 제공하는 이유는 무엇인가? 가상 메모리란 RAM이 부족해도 모든 프로그램이 자기만의 큰 메모리를 가진 것처럼 속여주는 시스템이다. 내가 크롬, 인텔리제이, 스프링 서버를 동시에 띄우면 실제 ram보다 훨씬 많은 메모리를 쓰는 것처럼 보인다.그게 가능한 이유가 가상 메모리이다. 그럼 왜 프로세스마다 주소 공간이 따로 있을까? 그래야 A 프로그램이 B 프로그램 메모리를 절대 침범하지 못하기 때문이다.즉 보안 + 안전성의 측면에서 이렇게 설계한 것이고동시에 서버에서 중요한 개념이라고 한다. 2026. 1. 14.
[#5][CD/CI] 배포의 기본 개념 [공통+JAVA 기준] 1. 배포의 본질개념 정리배포란, 내가 만든 프로그램을 서버에서 실제로 실행 가능하게 만드는 행위 핵심 3가지1. 실행 파일이 있다.2. 실행 파일을 서버에 올린다.3. 서버에서 실행 파일을 실행한다. @ 글쓴이가 이해한 포인트자동 배포, CI/CD 없어도 배포는 가능하다.본질은 파일을 서버에 올려 실해하는 것이다.자동 배포는 필수적인 것이 아닌 배포 이후 편의와 안전성의 문제 해결 방식일 뿐이다.2. JAR 파일이란,개념정리jar은 단순한 코드 파일이 아니다.내부에는 아래와 같이 구성되어 있기에 java -jar app.jar 한 줄로 실행이 가능하다컴파일된 .class 파일들내 코드 전체의존 라이브러리설정 파일Spring Boot 실행 로더 @글쓴이가 이해한 포인트 인텔리제이에서 작성한 프로젝트가.. 2026. 1. 13.
[#3][다시, 처음부터 #7 심화] 1. 개념 설명 (Concept)6일차: In-Memory Authentication (메모리에 계정 저장)7일차: Database Authentication (DB에 사용자 정보 저장 → UserDetailsService 구현)흐름:클라이언트가 /login 요청 보냄.AuthenticationManager가 UserDetailsService를 호출.UserDetailsService는 DB에서 사용자 검색.비밀번호 검증(PasswordEncoder) → 성공 시 Authentication 객체 반환.Spring Security FilterChain이 인증 상태를 SecurityContext에 저장.2. 올바른 용어 (Terminology)Authentication (인증): 사용자가 누구인지 확인.Aut.. 2025. 9. 28.
[#3][다시, 처음부터 #7] DB 연동 인증 6일차에서 JWT 필터로 “토큰 → 필터 → SecurityContext” 흐름을 이미 실습했으니까,이번엔 실제 서비스처럼 DB 사용자 계정과 권한(Role)을 기반으로 인증을 붙이는 단계 1. 개념 설명 (Concept)지금까지는 토큰 안에 username을 “직접 적어두고” 그대로 신뢰했지?하지만 실제 서비스에서는 사용자가 DB에 저장돼 있고, 로그인 시 DB에서 비밀번호 검증 → JWT 발급을 거쳐야 해.흐름클라이언트: /auth/login 요청 (username + password)서버: AuthenticationManager → UserDetailsService 통해 DB에서 사용자 조회PasswordEncoder로 비밀번호 검증성공 시 JWT 발급이후 요청은 6일차에서 만든 JWT 필터가 토큰.. 2025. 9. 27.
[#3][다시, 처음부터 #6]JWT를 활용한 실전 적용과 필터 기반 인증 흐름 1. 개념 설명 (Concept) 6일차 핵심 주제는 Spring Security와 JWT를 연결해서 실제 요청 흐름에 적용하는 것이에요.단순히 JWT 구조를 아는 것에서 멈추지 않고, 서버가 어떻게 요청(Request)마다 토큰을 해석하고 권한을 적용하는지를 다룹니다.실제 서비스 흐름:클라이언트(브라우저/앱) → 로그인 요청 → 서버에서 JWT 발급 (Access Token, 필요시 Refresh Token 포함)이후 클라이언트는 모든 요청의 HTTP Header(Authorization: Bearer )에 JWT를 넣어 보냄서버(Spring Security 필터 체인)는 JwtAuthenticationFilter 같은 커스텀 필터에서 토큰을 해석토큰 유효성 검증 (서명 확인, 만료 시간 확인)토큰 안.. 2025. 9. 26.
[#4] 스프링 빈(Bean) 개념 정리 그간 내가 쓰는 어노테이션들이 스프링 빈이란 것을 몰랐다.써야 하니까 썼는데, 스레드를 자바로 구현하는 예시가 궁금해서 찾아보다 내가 빈에 대해 전혀 잘못 알고 있었다는 점을 알았다. 이런 당연한데 몰랐던 점들이 많은 것 같은데, 그 중 하나이기에 바로 기록해보려 한다. 1) 스프링 빈이란?Bean(빈) = 스프링 컨테이너가 생성하고 관리하는 객체.개발자가 직접 new 하지 않고, 스프링이 대신 만들고 주입(Injection)해줌.빈은 이름(id) 과 타입(class) 기준으로 컨테이너에 보관. 2) 주입(Injection)과 호출(Call)주입: 컨테이너가 필요한 객체를 컨트롤러/서비스 안에 “끼워 넣는” 과정.(예: 전기 플러그를 콘센트에 꽂아줌)호출: 실행 시점에 주입된 객체의 메서드를 사용하는 것.. 2025. 9. 25.
[#3][다시, 처음부터 #5]JWT(Json Web Token) 기반 인증 지금까지 1~4일차는 API 기본 → HTTP 구조 → 요청/응답 흐름 → 서버 상태 관리(쿠키/세션/토큰)까지 왔다. 1. 개념 설명 (Concept) JWT 란?JSON Web Token: JSON 형식으로 정보를 담은 토큰을 헤더(Header), 페이로드(Payload), 서명(Signature) 3부분으로 나눈 인증 방식.서버가 클라이언트에게 토큰을 발급하고, 이후 요청 시 토큰을 포함해 보내면 서버가 DB 조회 없이 인증할 수 있음. 동작 흐름JWT = Header . Payload . Signature로그인 요청클라이언트 → 아이디/비밀번호 전송서버 → 인증 성공 시 JWT 생성 후 클라이언트에게 반환JWT 구조Header: 어떤 알고리즘으로 서명했는지 (alg) + 타입(typ=JWT)Pa.. 2025. 9. 23.
[#3][개념 정리 #3][네트워크] JWT 구조 1. 개념 설명 (Concept) JWT (JSON Web Token) = JSON 포맷으로 사용자의 인증/인가 정보를 담아, 암호화된 서명과 함께 전달하는 토큰.구조: Header.Payload.Signature Header (헤더): 토큰 타입(JWT)과 해싱 알고리즘(HS256 등)Payload (페이로드): 사용자 정보(Claim) → ID, 권한, 만료 시간 등Signature (서명): Header+Payload를 비밀키로 해싱한 값 (변조 방지 역할)2. 올바른 용어 (Terminology)Claim (클레임): 토큰에 담긴 정보 조각 (예: sub: userId, role: admin)exp (만료시간, Expiration Time): 토큰이 유효한 시간HS256: HMAC + SHA256.. 2025. 9. 17.
[#3][다시, 처음부터 #4]서버의 동작 방식과 상태 관리 서버의 동작 방식과 상태 관리는 웹 서버가 요청을 처리하는 과정과 세션/쿠키 같은 상태 관리 방식을 말한다. 1. 개념 설명 (Concept) 웹 서버 동작 흐름:클라이언트(브라우저) → HTTP 요청 → 서버(Controller → Service → Repository → DB) → 응답 반환서버는 기본적으로 Stateless(무상태): HTTP는 요청과 응답 후 연결을 끊기 때문에, 이전 요청의 상태를 기억하지 않음.하지만 로그인/장바구니 같은 기능을 위해 상태 관리가 필요 → 이를 위해 **쿠키(Cookie), 세션(Session), 토큰(Token)**을 사용.실제 서비스 예시:로그인 시도 → 서버에서 사용자 인증 → 세션 ID를 발급세션 ID는 브라우저 쿠키에 저장됨이후 요청마다 쿠키를 포함해 .. 2025. 9. 17.
[#3][다시, 처음부터 #3]HTTP 상태 코드(HTTP Status Code) 와 API 응답 설계 1. 개념 설명 (Concept)HTTP 상태 코드(HTTP Status Code):클라이언트 요청에 대해 서버가 어떤 결과를 반환했는지 숫자로 알려주는 규약.2xx: 성공(Success) → 요청이 정상적으로 처리됨3xx: 리다이렉션(Redirection) → 다른 위치로 이동 필요4xx: 클라이언트 오류(Client Error) → 잘못된 요청5xx: 서버 오류(Server Error) → 서버 문제API 응답(Response) 설계:단순히 데이터를 주는 게 아니라, 상태 코드 + 메시지 + 데이터 구조로 통일해야 클라이언트가 해석하기 쉽다.예 (Spring Boot 기준 JSON 응답 예시){ "status": 200, "message": "조회 성공", "data": { "userId": 1, ".. 2025. 9. 11.