전체 글 42

ECS run-task 한 줄 해부 #1 - ECS vs Fargate (& EC2)

1주일 넘게 걸리는 마이그레이션 작업을 로컬 노트북에서 돌리고 있었다. 노트북 슬립, 네트워크 끊김, 그동안 브랜치는 묶여있고. 특히 로컬과 브랜치에 종속되다 보니 다른 feature 작업을 할 때마다 병목이 걸리고 마이그레이션을 하루종일 못할 때도 있었다. 찐 병목…방향은 있었다. 노트북 말고 어디 백그라운드에서 알아서 돌게 하고 싶다는 정도. 근데 어디서 어떻게 띄울지 구체화하려니 막혔다.“ECS Fargate run-task로 자동으로 돌리도록 해야겠다.” 이 한 줄에 내가 아리까리한 개념이 6개쯤 있었다. ECS, Fargate, run-task, task definition, ECR, taskRole. Claude한테 명령어를 시키면 30초면 aws ecs register-task-definit..

Could not connect to Redis at 127.0.0.1:6379: Connection refusednot connected

redis-cli -h 127.0.0.1 -p 6379Could not connect to Redis at 127.0.0.1:6379: Connection refusednot connected> 로컬에서 띄우는 redis가 연결되지 않는다.확인해야할 것 1. 이미 실행중인 redis가 있는지 체크 ps aux | grep redis-serverkimjihan77 24138 1.0 0.0 410734288 1536 s000 S+ 9:21AM 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=..

Cursor 페이징 설계 재구성 : 정렬 기준이 하나 이상일 때

Cursor 페이징많은 사람들이 알고 있듯, LIMIT과 OFFSET을 사용한 페이징은 쿼리 실행 횟수가 많아지고, 그에 따라 응답 시간이 점점 길어지는 문제가 있다. ( 500건씩 N번 조회하면 (1 * 500) + … + ( N * 500) 건의 레코드 읽기가 발생.. ) 반면에, 커서 페이징은 마지막으로 조회한 항목의 고유값을 기준으로 다음 페이지를 가져오는 방식이다.이 방식은 OFFSET처럼 앞에서부터 N개의 데이터를 무시하고 건너뛰는 것이 아니라, 바로 다음 커서 이후의 데이터를 조회하기 때문에 조회량이 많아져도 쿼리성능이 일정하다는 장점이 있다. 초기 Cursor 페이징 구조 (ID 기반)초기 Cursor 페이징은 각 테이블에 공통으로 존재하는 기본 키인 id 값만을 기준으로 설계했다.1. R..

[Testing] 테스트 커버리지

테스트 커버리지작성한 코드들이 얼마나 테스트 되었느지에 대한 지표를 수치로 보여주는 것을 테스트 커버리지라고 한다.회사마다 이상적인 커버리지 비율은 다르고, 팀의 성숙도나 상황에 따라 접근 방식도 다르다. 내가 일했던 50~60명 규모의 스타트업에서는 커버리지를 따로 측정하진 않았고, 주로 간단한 API 통합 테스트만 작성했다. 암묵적으로 "통합 테스트는 쓰자"는 분위기는 있었지만, 현실적으로 일이 몰릴 땐 테스트가 생략되는 경우도 많았다. 그래서 이번 사이드 프로젝트에서는 테스트 커버리지도 직접 측정해보면서 테스트 설계와 도구에 대해 조금 더 이해해 보고자 한다. 도구테스트 도구들은 많지만, pytest와 pytest의 플러그인인 pytest-cov을 설치했다. pytest는 이미 실무에서 많이 쓰고 ..

Pydantic BaseSettings로 환경변수 관리하기 – @property 패턴 적용기

https://kojub.tistory.com/24 Pydantic.BaseSetting을 사용한 환경변수 관리.env 파일은 중요한 설정과 변수들을 정의한다. DB 정보, URL, API Key 등과 같은 민감한 정보를 코드에 하드코딩하지 않고 관리할 수 있어 필수적인 파일이다.그러나 개발⸰테스트⸰배포 환경이나kojub.tistory.com 한 5개월 전에 Pydantic BaseSetting으로 환경변수 관리하는 config파일을 구성한 적 있다.import osfrom dotenv import load_dotenvfrom pydantic_settings import BaseSettingsload_dotenv()def _getenv(name: str, default: str = None) -> str..

FastAPI + Prometheus + Grafana 연동으로 모니터링 환경 구축하기 ( Grafana )

https://kojub.tistory.com/52 FastAPI + Prometheus + Grafana 연동으로 모니터링 환경 구축하기 ( Prometheus )프로젝트 init을 마친 후, prometheus + grafana 조합의 모니터링 시스템을 구축했다.이왕 만들 거, 추후에 API 상태 모니터링을 통해 좀 더 안정적인 서비스를 운영해보고자 연동을 해보았는데, 그 과정kojub.tistory.com 앞전에 FastAPI 프로젝트에 Prometheus를 연동해 보았다.설정한 prometheus를 시각화 해서 보여주기 위한 Grafana 연동도 해보자.Grafana 컨테이너 실행 및 접속 방법요즘엔 Grafana에서 자동으로 Prometheus 데이터 소스 플러그인이 내장되어 있다.이 플러그인을..

FastAPI + Prometheus + Grafana 연동으로 모니터링 환경 구축하기 ( Prometheus )

프로젝트 init을 마친 후, prometheus + grafana 조합의 모니터링 시스템을 구축했다.이왕 만들 거, 추후에 API 상태 모니터링을 통해 좀 더 안정적인 서비스를 운영해보고자 연동을 해보았는데, 그 과정들을 살펴보자. prometheus FastAPI 적용1. docker desktop을 활성화 시킨 뒤, prometheus의 docker 이미지를 로컬에 다운로드 한다.docker pull prom/prometheus 2. 루트경로에 prometheus_data 폴더를 생성한 뒤, 그 안에 promehteus 설정파일 (promehteus.yml)을 만들어준다.global: scrape_interval: 15sscrape_configs:- job_name: 'bread-pilgrim'..

2025 오픈소스 컨트리뷰션 아카데미 ( OSSCA ) 활동 후기

PR Agent 프로젝트 활동내용PR 문화와 코드 리뷰 자동화 도구에 관심을 갖기 시작하던 시기에,운 좋게도 좋은 기회가 찾아와 참여하게 되었던 OSCCA PR Agent 프로젝트 활동이 마무리되었다. 어떻게 진행됐었더라?멘토님께서 이전 세션 때는 개인과제만 주셨다고 했는데, 이번 PR Agent 프로젝트에서는 5개의 팀을 구성해 팀원들과 함께 오픈소스 기여 과정을 직접 경험하도록 해주셨다. 구성된 팀끼리는 매주 1시간 이상 정기모임을 진행했고, 주차마다 주어지는 과제에 대해 논의했다.또, 일요일마다 멘토님과 다른 멘티분들까지 함께 정기모임을 진행하면서 학습 및 기여 진행상황들을 공유하고 피드백 하는 시간을 가졌다. 1 ~ 3 주차실제로 PR Agent에 기여 작업을 하기전에, 필요한 학습을 주로 진행..

끄적거림 2025.05.26

[ PR Agent ] CLI 방식 동작구조

PR Agent 를 로컬에서 실행해보았다. CLI 방식으로 실행해보았고, 동작구조를 살펴보기 위해 pr_agent/cli.py 파일을 들여다 보았다. 동작구조 도식화0. cli.py 파일 트리거cli.py 파일이 실행되면, run 메소드가 실행된다.if __name__ == '__main__': run() 1. CLI argument parserrun 메소드가 실행되면, 가장 먼저 set_parser 즉, CLI로 입력된 커맨드라인 인자값을 파싱하는 메소드(=set_parser)가 실행된다.def run(inargs=None, args=None): parser = set_parser() set_parser() 메소드PR-Agent를 실행할 때 어떤 인자를 받을지 정의하는 역할을 한다.def ..

프로그래밍/LLM 2025.05.08

[PR Agent] 1. 환경설정 및 테스트

https://qodo-merge-docs.qodo.ai/usage-guide/ Usage guide - Qodo Merge (and open-source PR-Agent)Noneqodo-merge-docs.qodo.aiPR Agent 란 PR-Agent는 Pull Request를 보다 효율적으로 리뷰하고 처리할 수 있도록 도와주는 오픈소스 도구로, 이번 OSSCA에서 기여할 프로젝트이다.오픈소스 기여의 초석을 다지기 위해, 해당 프로젝트의 환경 설정 과정을 먼저 살펴보았다. Run from sourcehttps://qodo-merge-docs.qodo.ai/installation/locally/#run-from-source1. pr-agent 오픈소스 레포 클론git clone https://githu..

프로그래밍/LLM 2025.05.02