프로그래밍81 FastAPI 서버 구축하기 FastAPI FastAPIFastAPI framework, high performance, easy to learn, fast to code, ready for productionfastapi.tiangolo.com 나는 공식 문서를 참고해서 작성했다. from fastapi import FastAPIfrom typing import Unionapp = FastAPI()@app.get("/")async def read_root(): return {"Hello": "World"}def main(): print("Hello from chord-ai!")if __name__ == "__main__": main()공식 문서 기준 다음과 같이 main.py를 작성하고 서버를 실행하면 된다. .. 2026. 3. 15. 파이썬 가상환경 구축하기 가상환경이란 파이썬에서 독립적인 프로젝트를 위한 개별적인 공간을 말한다. 가상환경을 이용하면 프로젝트마다 의존성과 라이브러리를 구분하여 관리할 수 있다. 또한 다른 개발자들과 협업하는 경우 개발 환경을 통일하기도 쉽다. 보통 파이썬 환경에서 가상환경을 구축할 떄는 Conda와 Venv를 많이 사용한다. Conda콘다는 Anaconda 또는 Miniconda를 통해 설치가 가능하다. (Miniconda가 더 경량화된 버전이다) 콘다 가상환경은 다음과 같이 생성한다. [Window 기준]conda create --name [가상환경 이름] python=[파이썬 버전] 활성화는 activate 명령어를 사용한다.activate [가상환경 이름] 콘다는 다음과 같은 특징이 있다.파이썬 외에.. 2026. 3. 15. EC2 저장공간 부족 문제 해결 EC2에 스프링부트 서버를 띄워서 제공하던 중 서버가 다운되는 문제가 발생했다. 이전에는 항상 서버가 다운되면 메모리 문제였기 때문에 이번에도 메모리를 확인해보았지만 이번에는 메모리는 문제가 없었다..! 따라서 앱 로그를 확인해보니 아래와 같이 저장공간이 부족하다고 경고가 계속 떴던 상황이다.05:00:44.119 [http-nio-8080-exec-8] WARN o.s.b.a.s.DiskSpaceHealthIndicator - Free disk space at path '/app/.' below threshold. Available: 3923968 bytes (threshold: 10485760B) 2026-02-15 따라서 어떤 것들이 저장공간을 차지하고 있는지 확인해보았다df -h /app.. 2026. 2. 20. 스프링부트 요청 형식 불일치 시 오류 처리 스프링부트 프로젝트를 진행하던 중 PM님께서 요청 형식이 일치하지 않을 때 에러메시지를 따로 처리해달라고 요청이 왔다. 예를 들면 다음과 같은 상황이다. 스프링부트에서는 int 형식을 요청 형식으로 받기를 기대하고 있는데 실제로는 문자열을 보내는 경우 지금은 INTERNAL SERVER ERROR로 통일해서 예외가 발생되고 있으며, 스프링부트 서버 내부에서는 다음과 같이 예외를 발생시키고 있다. 2026-02-19 01:21:24.614 [http-nio-8080-exec-2] ERROR c.c.a.e.GlobalExceptionHandler - Unexpected exception occurredorg.springframework.http.converter.HttpMessageNotReadab.. 2026. 2. 19. Enum Converter를 모든 Enum에서 새로 생성해야할까? 이전 프로젝트를 진행하면서 가장 아쉬웠던 부분이 Enum을 관리하는 방법이었다. 우리가 진행하던 프로젝트에서는 수많은 Enum들이 사용되었지만, 시간 상의 제약으로(변명이지만) 따로 효율적으로 관리하는 방법을 생각하고 적용하지는 못했다. 그래서 이번에 새로운 프로젝트를 진행할 때는 이에 대해 더욱 고심하고 적용하고 싶었다. 그래서 구글링하던 중 아래 글을 발견했다. JPA Entity Enum Converter를 좀 더 유연하게 관리하는 방법 재사용 가능한 컨버터 패턴을 적용하자package com.coachcoach.catalog.entity.converter;public interface CodedEnum { T getCode();}먼저 CodeEnum이라는 인터페이스를 정의해준다. 이를 .. 2026. 1. 8. EC2를 NAT 인스턴스로 구성하는 중 발생한 문제 해결 (Feat. FORWARD 체인을 확인하자) 일단 내가 구성한 아키텍처는 다음과 같았다.public subnet, private subnet을 각각 1개씩 두고 public subnet에 ec2를 1개, private subnet에 ec2를 2개 두는 것이다. public subnet 내의 인스턴스에는 API Gateway, Eureka Server를 위치하도록 하고, private subnet 내의 인스턴스 2개는 비즈니스 로직을 처리하는 모듈들을 분리해 위치하도록 구성하는 것이다. 따라서 public EC2 instance에만 인터넷 게이트웨이를 연결해두었다. 하지만 Private EC2에서도 도커 등을 설치하기 위해서 인터넷 접근이 가능하도록 구성해야했다. 그렇다면 NAT를 구성해주어야 하는데 인프라 비용을 최대한 절감하고 싶었기 때문에 별.. 2026. 1. 2. 이전 1 2 3 4 ··· 14 다음