분류 전체보기(120)
-
GitHub Actions + Docker Buildx로 레이어 캐시 적용하기 – CI 빌드 시간 70% 단축하기
Docker 레이어 캐시를 GitHub Actions에서 Buildx와 ECR를 활용해 적용한 과정을 공유하려고 합니다. 특히, 의존성 설치 단계를 분리해 캐시 히트율을 극대화하고, 빌드 시간을 70% 이상 단축한 사례를 소개합니다. Docker 레이어 캐시가 필요한가?Docker는 레이어 기반으로 이미지를 빌드합니다. RUN, COPY, ADD 등의 명령어는 각각 하나의 레이어를 생성하고, 이 레이어가 변경되지 않으면 재사용(캐시)됩니다.하지만 CI 환경에서는: • 매번 새로운 runner 사용 → 로컬 캐시 없음 • requirements.txt가 자주 변경되지 않는데도 COPY ./app /app 후 pip install이 매번 실행됨 • 결과적으로 의존성 설치에 3~5분 소요이걸 해결하기 위해 D..
2025.11.26 -
AWS Graviton Instance 전환
이 글에서는 Graviton 인스턴스로 전환하는 과정, Docker 이미지 아키텍처 문제 해결, EKS에 새로운 Node Group 추가 및 파드 배치 과정을 단계별로 공유합니다.AWS Graviton(Arm 기반) 인스턴스는 비용 절감(20~40%), 성능 향상 등 강력한 장점을 제공합니다.Amazon EKS 또한 arm64 아키텍처를 공식 지원아기 때문에 기존 워크로드를 큰 수정 없이 옮길 수 있습니다. Graviton(Arm 기반) 인스턴스로 전환할 때 장점비용 효율성동일 스펙 대비 약 20~40% 저렴같은 비용으로 더 높은 성능 확보 가능온디맨드/스팟/RI 모두 가격 혜택성능 개선Graviton2/3는 최신 Arm 아키텍처 기반으로 CPU 성능/와트 효율이 우수일부 워크로드에서는 x86 대비 더..
2025.09.05 -
Google Gemini CLI 설치 방법(MacOS)
이 글에서는 Google의 Gemini CLI 설치 방법을 정리했습니다. 설치 과정에서 발생할 수 있는 인증 에러와 그 해결 방법도 함께 다루었으니, 처음 Gemini CLI를 설정하는 분들도 문제없이 따라하실 수 있습니다. 터미널 환경에서 Gemini CLI 활용하고 싶은 분들에게 도움이 될 내용입니다.설치 방법1. node 설치google gemini가 node기반이라 설치필요 brew install node node -v2.Gemini CLI 설치npm install -g @google/gemini-cli 3.gemini 실행 후 인증방법 선택gemini인증방법 교체 혹은 인증 재시도 시 /auth 명령어 실행4. Login with Google 동작 시 권한 에러 발생 시 처리 방법1. Googl..
2025.07.18 -
에러 해결(error: externally-managed-environment)
WSL 환경에서 python 패키지를 다운로드 받을때 externally-managed-environment 에러가 나는 경우 해결 방법을 정리한 문서입니다. 에러 메시지 pip install -r requirements.txterror: externally-managed-environment× This environment is externally managed╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package,..
2025.06.25 -
Docker Desktop for Mac 없이 Docker 사용하기
Docker Desktop이 대규모 비지니스에서는 유료 구독을 사용해야하는 상황입니다. 이에 대응하기 위해서 Docker Desktop for Mac 없이 Docker 사용하는 방법을 정리했습니다. Colima 란?Colima는 macOS에서 Docker 환경을 실행하는 오픈소스 경량화 도구입니다. GUI를 제공하지 않지만 Docker CLI와 완벽히 호환되며, 배터리 소모를 줄이고 성능을 최적화하는 데 초점을 맞춘 가상 머신(VM) 기반 도구입니다. 또한 Kubernetes와 파일 공유 기능까지 지원하여 다양한 개발 환경에서 유연하게 활용할 수 있습니다.Colima 설치brew install colimaDocker, Docker compose 설치brew install docker docker-comp..
2025.05.07 -
Python 타입 힌트 평가 지연(from __future__ import annotations)(feat. TYPE_CHECKING)
FastAPI나 SQLAlchemy처럼 타입 힌트를 자주 쓰는 프로젝트를 하다 보면 클래스 간 순환 참조(circular reference)나 선언 순서 문제로 코드가 지저분해집니다. __future__.annotations 과 TYPE_CHECKING을 사용하여 타입 힌트 평가 지연을 통해서 문제를 해결하는 방법을 정리했습니다. 참고글- https://hunstory.tistory.com/112 lambda 를 활용한 클래스 참조 문제 해결Python의 lambda 함수는 익명 함수(anonymous function)로, 한 줄로 간결하게 함수를 표현할 수 있는 기능입니다. 보통 lambda는 코드의 라인 수를 줄이거나, map, filter 같은 함수와 함께 사용되어 가독성을hunstory.tisto..
2025.04.24 -
FastAPI에서 실제 DB를 사용하는 테스트 환경 구성하기
astAPI로 개발하면서 단위 테스트나 통합 테스트를 작성하다 보면, 실제 데이터베이스에 데이터를 넣고 결과를 확인해야 할 때가 있습니다. 하지만 테스트가 끝난 뒤에도 데이터가 DB에 남는다면, 다음 테스트에 영향을 줄 수 있습니다. 이를 해결하기 위한 방법 중 하나는 테스트 중 생성된 데이터를 테스트 종료 후 롤백(Rollback) 처리하는 것입니다.해당 글에서는 Async Test 환경에서 실제 DB에 접근하면서도, 테스트가 끝나면 DB를 원래 상태로 되돌리는 구조를 정리했습니다.작동 원리테스트 함수 실행 시 test_db_session에서 DB 세션(Function 단위)이 생성됩니다.FastAPI의 get_db 의존성을 오버라이드하여 실제 엔드포인트에서도 이 테스트 세션이 사용됩니다.테스트가 끝..
2025.04.16 -
유용한 git action 모음
GitHub Actions는 GitHub 저장소 내에서 발생하는 이벤트(예: PR 생성, 코드 푸시 등)에 반응해 자동으로 워크플로우를 실행할 수 있도록 도와주는 CI/CD 자동화 도구입니다. 이를 활용하면 반복적인 작업을 자동화하고, 프로젝트의 품질과 생산성을 높일 수 있습니다.이번 글에서는 오픈소스 프로젝트에서 널리 사용되고 있는 대표적인 GitHub Actions 을 정리했습니다. 더 좋은 Action이 생기고 발견한다면 계속 추가될 예정입니다. 1. Stale - 오래된 이슈 자동 정리기능: 일정 기간 활동이 없는 이슈나 PR을 자동으로 닫아주는 액션입니다.활용 예시: 답변이 없거나 장기간 방치된 이슈를 자동으로 정리하여 백로그를 깔끔하게 유지할 수 있습니다.사용 중인 프로젝트 예시:DeepSee..
2025.04.10