There are 171 posts.

Ubuntu 서버에서 메모리 사용량 확인 및 스왑 설정으로 안정성 높이기

May 02, 2025

서론 최근에 메모리가 1GB 미만인 오라클 클라우드 서버를 운용하면서 1GB 미만의 소형 Ubuntu 서버에서 여러 Docker 컨테이너(FastAPI 기반) 서비스를 운영하면서 메모리 부족 문제로 인해 시스템이 비정상적으로 느려지는 문제를 겪었습니다. Dev와 Prod를 한 서버에 다른 컨테이너로 두고 있었는데, 두 개의 배포가 동시에 이뤄질때엔 사용 …


prepared statement does not exist 오류

April 27, 2025

서론 Supabase에서 제공하는 PostgreSQL 풀러(PgBouncer)를 Transaction 모드로 운영하는 환경에서, Python 3.12과 SQLAlchemy 2.x의 비동기(asyncio) 엔진을 함께 사용할 때 오류가 발생하는 경우가 있습니다. 이 글에서는 오류의 원인과 해결 방법을 코드 예제와 함께 정리합니다. 개발 환경 Python …


오라클 서버 https 인증서 설치하기

April 24, 2025

서론 일단 아무거나 만들기 시작했습니다. 사둔 도메인도 있고.. 일단 서버를 올리기로 해서 올렸습니다(? 이번 글에서는 Namecheap에서 구매한 도메인에 대해, 오라클 클라우드 서버에서 무료 SSL/TLS 인증서를 발급받고, 이를 Nginx와 Certbot을 활용하여 설치 및 관리하는 과정을 기록합니다. 사전에 80번, 443번 포트는 열어둬야 합니다…


Nginx의 Reverse Proxy 모니터링

February 21, 2025

Nginx 로깅의 중요성 Nginx는 웹 서버 및 리버스 프록시 역할을 수행하면서 모든 HTTP 요청과 응답을 기록합니다. 이 로그를 효과적으로 모니터링하면 다음과 같은 장점을 얻을 수 있습니다. 트래픽 분석: 요청량이 가장 많은 API는 무엇인가? 응답 코드 모니터링: 4xx, 5xx 오류가 많이 발생하는가? 장애 감지: 502, 504 에러가 급증하고…


LDAP

February 20, 2025

서론 LDAP에 대해 알아보겠습니다. 개념적인 부분들에 대해 정리하고 넘어가려고 합니다. 디렉터리 서비스 LDAP은 디렉터리 서비스에 저장된 데이터를 검색하고 관리하기 위한 프로토콜입니다. LDAP을 이해하려면 먼저 디렉터리 서비스가 무엇인지 알아야 합니다. 디렉터리 서비스(Directory Service)란? 디렉터리 서비스는 조직 내의 사용자, 그룹…


Ruff

February 20, 2025

서론 uv를 조사하고 알고 하다가 Ruff의 존재도 알게 되었습니다. 현재 회사의 팀에서는 나머지 백엔드 개발자는 파이참을 주력으로, 저는 Cursor를 사용하고 있고 포맷팅이나 린팅에 대한 팀의 컨벤션 통일이 안되어있어 Ruff를 제안하면 좋겠다고 생각이 들어 알아보게 됐습니다. Ruff란? Ruff는 Python 코드를 빠르고 효율적으로 분석 및 포…


React Native에서 커스텀 폰트 추가하여 사용하기

February 19, 2025

서론 이번에 만들어볼 어플리케이션에서는 폰트를 모두 Noto Sans KR로 통일하려고 합니다. 기복없이 튀지 않으면서 안정적인 폰트 같습니다. 그래서 리액트 네이티브 프로젝트에서 폰트를 어떻게 적용하면 될지를 기록하겠습니다. 프로젝트 준비 폰트 다운로드 프로젝트 내의 ./assets/fonts/ 폴더에 .ttf 파일들을 넣어둡니다. 폰트는 이 곳에서…


poetry를 활용해 안정적으로 package 업데이트하기

February 18, 2025

서론 uv는 빠른 설치, 간편한 사용 등 많은 장점이 있지만 아쉽게도 패키지 업데이트 및 설치 시에 최신 버전을 우선적으로 설치하며, poetry 같은 세밀한 의존성 검사를 수행하지 않습니다. 지금 새로 시작하는 프로젝트로 최신 버전의 라이브러리를 사용할 것이라면 별 문제가 되지 않겠지만 레거시 프로젝트를 업데이트 할 때에는 uv를 사용하기가 쉽지 않습니…


Nginx를 활용한 Reverse Proxy 구현(2)

February 17, 2025

서론 이번에는 리버스 프록시를 구현해보고, 동적으로 환경변수를 삽입하는 방법에 대해 알아보겠습니다. 리버스 프록시의 구현 기본 리버스 프록시 설정 가장 간단한 리버스 프록시 설정은 클라이언트의 요청을 특정 백엔드 서버로 전달하는 것입니다. 다음은 http://localhost:80으로 들어오는 요청을 내부의 백엔드 서버(8080 포트)로 프록시하는 설정…


Nginx를 활용한 Reverse Proxy 구현(1)

February 14, 2025

서론 현재 근무하는 회사의 API Gateway 역할을 하는 서버의 유지보수/고도화 업무를 맡게 됐습니다. API Gateway 역할을 하고 있다고는 하지만 사실은 아직 아주 일부의 기능만 구현된 상태로, 일단은 각 마이크로서비스의 리버스 프록시 역할을 할 수 있도록 Nginx를 활용하려고 합니다. 이번 글에서는 프록시와 리버스 프록시의 개념부터 Ngi…

© SharkniA, Built with Gatsby.