본문 바로가기

전체보기

(21)
[OS] IO 바운드 vs CPU 바운드 작업의 병렬 처리 방식 목차 용어 정리용어의미I/O 바운드 (Input/Output Bound)CPU가 계산하는 시간보다 외부 자원(디스크, 네트워크 등)에서 데이터를 주고받는 시간이 더 오래 걸리는 작업.CPU 바운드 (CPU Bound)외부 자원보다 CPU 연산에 더 많은 시간이 소요되는 작업.비동기 프로그래밍 (Asynchronous Programming)하나의 스레드가 작업이 끝나길 기다리지 않고 다른 작업을 계속 수행할 수 있도록 하는 방식.스레드 (Thread)하나의 프로세스 안에서 병렬로 작업을 수행할 수 있는 실행 단위.멀티프로세싱 (Multiprocessing)여러 개의 프로세스를 만들어서 병렬로 작업을 수행. 각 프로세스는 별도의 메모리 공간을 가짐. 왜 I/O 바운드는 비동기 프로그래밍이 적합한가?I/O 바..
[FastAPI] 📌 BackgroundTasks vs Celery — 언제 뭐 쓰면 좋을까? 목차 FastAPI에서 비동기 백그라운드 작업을 할 때, 가볍게 BackgroundTasks를 쓸지, 아니면 Celery를 쓸지 고민한 적이 있을 것이다.겉으로는 “둘 다 요청 끝나고 뒤에서 뭔가 하는” 느낌이지만, 스케일이나 내구성, 운영 복잡도에서 차이가 발생한다. 이번 글에서는 언제 어떤 걸 쓰면 좋은지 개인적인 견해를 정리해보려고 한다.언제 어떤 걸 써야 하는지 요약상황추천API 응답 직후, 짧고 가벼운 작업BackgroundTasks몇 초~수시간짜리 작업, 재시도/스케줄링 필요, 유실되면 안 됨Celery비교 표항목BackgroundTasksCelery실행 위치요청 받은 앱 프로세스 안별도의 워커 프로세스내구성프로세스 죽으면 작업 날아감브로커에 저장돼서 안전재시도직접 구현해야 함내장 지원예약/스..
[FastAPI] 🔭 OAuth2 Scopes 목차 FastAPI는 Python 기반의 최신 웹 프레임워크로, 속도와 직관성을 동시에 제공하는 것으로 유명한 프레임워크이다.그중에서도 OAuth2 Scopes 기능은 보안과 권한 관리에서 매우 중요한 역할을 한다. OAuth2 Scopes란?OAuth2 Scopes는 "누가 무엇을 할 수 있는지"를 세분화해서 정의하는 권한 단위이다.즉, 단순히 "로그인 성공"만으로 모든 API 접근을 허용하는 것이 아니라,각 API 엔드포인트마다 세부 권한을 지정할 수 있게 해주는 개념이다.예시:users:read → 사용자 정보를 읽을 수 있는 권한users:write → 사용자 정보를 수정할 수 있는 권한items → 아이템 데이터를 읽는 권한Google API 예시: https://www.googleapis.co..
[FastAPI] 🔐 JWT 로그인 구현하기 목차 사용자 인증은 모든 웹 서비스의 핵심이다.FastAPI에서는 JWT (JSON Web Token)를 활용하여 인증 기능을 간결하면서도 강력하게 구현할 수 있다. 이 글에서는 JWT 토큰 생성 → 검증 → 로그인 구현까지 실전 예제로 설명한다. 또한 FastAPI의 HTTPException과 status를 활용한 예외 처리도 함께 다룬다.JWT란?JWT (Json Web Token)는 클라이언트와 서버 간에 서로 신뢰할 수 있는 방식으로 정보를 주고받기 위한 토큰 포맷이다.JWT는 다음과 같은 구조를 가진다. Header.Payload.Signature 예시 payload:{ "id": 123, "exp": 1723042151} 준비 사항JWT 처리를 위해 python-jose 라이브러리를 사용한..
[Go] Go에서 랜덤값 생성하기 목차Golang을 사용해서 숫자 맞추기 게임을 만들어보았다. 게임을 만들면서 rand 패키지를 사용하여 랜덤값을 생성하였는데, 이때 학습한 내용을 간단히 정리하고자 한다. rand.Intn(range)math 패키지의 rand.Intn(range) | 0 함수를 사용하면 랜덤 한 int를 생성할 수 있다. 이때 range의 범위는 half-open [0, range)이다.여기서 주의할 점은 rand 패키지를 통해 생성되는 랜던값은 완전한 랜덤이 아닌 유사 랜덤값이다.유사 랜덤이란 어떤 알고리즘에 의해서 마치 랜덤인 것처럼 보이는 값을 말한다. 이는 컴퓨터의 논리 회로와 산술 연산은 같은 입력에 대해서 같은 결괏값을 만들어내기 때문이다. 그렇기 때문에 단순히 rand.Intn(range) 함수만 사용하면..
[Spring Batch] 동일한 Job과 Step이 반복 실행되지 않는 문제 목차# 문제티켓팅 프로젝트에서 배치 잡을 구현하면서 다음과 같은 예외를 마주하였다.java.lang.IllegalStateException: Failed to execute ApplicationRunner ...Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: # 원인스프링 배치는 기본적으로 잡과 스텝의 상태를 저장하고 이에 기반하여 잡과 스텝의 실행을 1번 만 수행할 수 있도록 보장한다. 배치 잡이 실행되면 JobInstance가 생성된다. 이때 JobInstance는 잡의 논리적 실행을 나타내며 두 가지 ..
[Spring Batch] @EnableBatchProcessing 적용시 배치 잡이 동작하지 않는 문제 목차# 문제 티켓팅 프로젝트를 개발하면서 Spring Batch를 이용하여 배치 잡을 구현했다. 배치 잡을 구현하면서 배치 서버 기동 시 헬스체크 테스트를 위한 배치 잡을 구현하였는데, @EnableBatchProcessing 어노테이션을 configuration 클래스에 적용했음에도 기본 잡이 실행되지 않는 문제가 발생하였다. 테스트 배치 잡의 경우 프로젝트에서 필요한 기능은 아니었기 때문에 중요한 문제는 아니었지만, 왜 동작하지 않았는지에 대해서 간단하게 정리해보고자 한다. # 원인 문제의 원인은 SpringBoot 3.0 부터 DefaultBatchConfiguration 클래스 혹은 EnableBatchProcessing 어노테이션을 선언할 경우 배치 잡의 자동 실행하는 것을 제한하는 로직이 추가..
[AWS] AWS SAA-C03 6일 합격 후기 목차AWS를 통해 배포환경을 구축하면서 정말 다양한 서비스를 AWS에서 지원하는 것을 알 수 있었습니다. 현재 AWS는 전 세계적으로 200대가 넘은 완벽한 기능의 서비스를 제공하고 있고, 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 서비스이다.  단순히 배포뿐만 아니라 AWS에서 제공하는 서비스에 대한 전반적인 학습을 하고자 AWS Certified Solutions Architect - Associate(SAA-C03) 시험을 보게 되었습니다. 시험은 6일 동안 준비하였고, 간단하게 합격한 후기와 팁을 남겨보고자 합니다.AWS Certified Solutions Architect - Associate AWS Certified Solutions Architect - Associate  # ..