Devlog
HOMEABOUTPORTFOLIOARCHIVESCATEGORIESTAGSSEARCH
  • Spring Boot - RabbitMQ 연동하기

    2025-07-03 About 12 mins

    Spring Boot로 웹 애플리케이션을 만들다 비동기 처리가 필요합니다. 이때 주로 사용되는 RabbitMQ 사용 방법을 정리합니다. 1.핵심 개념 Producer (생산자): 메시지를 만들어 우체국에 보내는 발신인. Consumer (소비자): 우편함에 도착한 메시지를 가져와서 처리하는 수신인.... Read More

    #spring-boot#rabbitmq#message-queue#amqp
  • Spring Boot - H2: 내 컴퓨터에 DB 설치 없이 개발하기

    2025-06-22 About 7 mins

    H2는 별도의 설치가 필요 없는 ‘연습용 DB’라고 생각하면 쉽습니다. 보통 메모리 위에서 동작하기 때문에 속도가 매우 빠릅니다. 이번 글에서는 H2 데이터베이스를 Spring Boot 프로젝트에 연동하는 방법을 정리합니다. 1. 프로젝트에 H2와 JPA 설정 build.gradle.kts 파일의 depend... Read More

    #spring-boot#jpa#h2#database
  • Spring Boot - QueryDsl 연동하기

    2025-06-10 About 7 mins

    QueryDSL을 Spring Boot 프로젝트에 연동하고, 쿼리 작성을 위한 기본 설정을 완료하는 과정을 정리합니다. Querydsl의 가장 큰 장점은 컴파일 시점에 오류를 감지할 수 있는 타입-세이프한 쿼리 작성입니다. SQL을 문자열로 작성하는 경우, 오타나 잘못된 컬럼명 등은 런타... Read More

    #spring-boot#querydsl#jpa#database
  • Spring Boot - 생성자 주입을 사용해야 하는 이유

    2025-06-05 About 9 mins

    Spring 프레임워크의 핵심 철학 중 하나는 IoC(Inversion of Control, 제어의 역전)이며, 이를 구현하는 대표적인 기술이 바로 DI(Dependency Injection, 의존성 주입)입니다. DI 덕분에 우리는 객체 간의 의존관계를 코드 내부가 아닌 외부(Spring 컨테이너)에서 설정하여,... Read More

    #spring-boot#di#ioc#test#injection
  • Spring Boot - Interceptor와 AOP 언제 무엇을 써야 할까?

    2025-06-02 About 16 mins

    개발을 하다 보면 여러 비즈니스 로직에서 반복적으로 나타나는 공통 기능들이 있습니다. 예를 들어, 모든 API 요청에 대한 로깅, 특정 메서드의 실행 시간 측정, 트랜잭션 처리 등이 있습니다. 만약 이러한 공통 기능들을 각 비즈니스 로직 코드 안에 직접 작성한다면 많은 중복으로 유지보수가 어려워집니다. @Service ... Read More

    #spring-boot#aop#interceptor#aspect
  • Spring Boot - Servlet Filter 언제 어떻게 써야 할까?

    2025-05-02 About 11 mins

    웹 애플리케이션을 개발하다 보면 여러 컨트롤러에 걸쳐 공통적으로 처리해야 할 작업들이 생깁니다. 예를 들어, 모든 요청에 대한 로깅, 특정 요청에 대한 인증/인가 처리, 요청/응답 데이터의 전처리 후처리 작업이 있습니다. 이런 로직을 필요한곳에 매번 작성하는 것은 중복과 유지보수 비용이 많이 발생하게 됩니다. S... Read More

    #spring-boot#filter#servlet
  • ECS Execute Command 알아보기

    2025-03-02 About 13 mins

    ECS execute-command는 무엇인가? EAmazon ECS의 execute-command는 ECS 컨테이너의 쉘에 접속해 명령어를 실행할 수 있는 기능으로, EKS에서 pod에 접속해 내용을 확인하는 것과 유사합니다. 이 기능을 사용하면 컨테이너 내부에서 디버깅, 로그 확인, 설정 변경 등을 자유롭게 할 수 ... Read More

    #aws#ecs#docker#container
  • ECS 서비스 헬스체크

    2025-02-03 About 4 mins

    ECS 서비스에서 태스크 컨테이너의 헬스 체크 방식을 개선한 방향을 정리합니다. 1초마다 cloud watch에 헬스 체크 로그를 기록하는 방식이 필요한 로그를 찾을때 노이즈가 되어 불편함이 있었습니다. 문제는 뭘까? 기존에는 카프카 컨슈머 커맨드가 무한 반복문으로 돌면서 작업을 처리하고, 매번 작업이 끝난 후 1초... Read More

    #ecs
  • FastMCP로 자체 MCP 서버 구현해보기

    2025-01-20 About 4 mins

    FastMCP 패키지를 사용하여 MCP 서버를 구축하고, 이를 Cursor AI 에디터에 연동하는 방법을 정리합니다. FastMCP 서버 작성 FastMCP는 간단한 데코레이터를 사용하여 MCP 서버를 쉽게 만들 수 있도록 도와주는 파이썬 라이브러리입니다. 다음은 FastMCP를 사용하여 간단한 MCP 서버를 작성하는 예제 코드입... Read More

    #mcp
  • SonarCloud 없이 로컬에서 Test Coverage 측정하고 리포트 생성하기

    2024-09-07 About 2 mins

    [필수] 커버리지 측정하기 및 결과 파일 만들기 coverage run manage.py test --settings=server.settings.test --keepdb coverage combine # 생성 된 .coverage.* 파일들 하나로 합쳐줌 커맨드라인에서 모든 파일의 커버리지 확인하는 방법 cove... Read More

    #testing#coverage#python#pytest#sonar
  • MariaDB/InnoDB의 Lock 종류와 동작 방식 이해하기

    2024-07-15 About 8 mins

    데이터베이스에서 동시성(Concurrency) 제어는 데이터의 무결성을 지키는 매우 중요한 요소입니다. 여러 트랜잭션이 동시에 같은 데이터에 접근할 때 발생할 수 있는 문제를 막기 위해 데이터베이스는 ‘잠금(Lock)’ 메커니즘을 사용합니다. 이 글에서는 MariaDB의 InnoDB 스토리지 엔진에서 사용되는 다양한 잠금... Read More

    #mariadb#database#lock#innodb
  • React Flow로 대규모 데이터 트리뷰 구현 및 최적화하기

    2024-06-15 About 5 mins

    위계 데이터를 트리 테이블로 표현하고 있지만 전체 위계를 한눈에 펼쳐보고 싶다는 요구사항이 있었고, 이를 해결하기 위해 트리뷰 형태로 프로토타입을 만들었습니다. react-flow 라이브러리를 사용하여 수만개의 데이터를 트리뷰로 표현하고 그 과정에서 마주한 성능 문제를 해결한 경험을 정리합니다. 특히 3만개 이상 대량 위계... Read More

    #react#react-flow#javascript#visualization#performance
  • SQL에서 계층 구조 데이터 표현 방식 비교

    2024-06-10 About 6 mins

    조직도, 카테고리, 댓글 등 우리가 개발하는 많은 기능에는 계층 구조가 포함됩니다. 관계형 데이터베이스는 본질적으로 평면적인 데이터를 다루기 때문에, 이러한 계층 구조를 효율적으로 저장하고 조회하는 것은 꽤나 까다로운 문제입니다. 이 글에서는 SQL 데이터베이스에서 계층 구조 데이터를 표현하는 대표적인 네 가지 방식... Read More

    #database#sql#hierarchy#cte#recursive-query
  • MySQL에서 postgres 마이그레이션 체험기

    2024-05-19 About 8 mins

    로컬 환경에서 pgloader를 사용하여 MySQL에서 postgres 마이그레이션을 진행하는 과정을 정리합니다. Docker Compose 설정 개발 환경에서 postgres 실행하기 위해 docker-compose.yml 파일을 다음과 같이 수정했습니다. postgres: image: "postgre... Read More

    #postgres#database#migration#mysql
  • Sentry 에러 리포트에 set_context로 풍부한 정보 추가하기

    2024-04-13 About 5 mins

    Sentry는 훌륭한 에러 트래킹 도구이지만, 때로는 에러만으로는 문제의 원인을 파악하기에 정보가 부족할 때가 있습니다. 예를 들어, 특정 사용자의 요청이나 특정 데이터 처리 과정에서만 발생하는 에러의 경우, 해당 시점의 컨텍스트 정보가 함께 기록된다면 디버깅이 훨씬 수월해질 것입니다. 이 글에서는 Sentry SDK의... Read More

    #sentry#error-tracking#logging#monitoring
  • Celery 작업 로그 추가하기

    2024-02-02 About 5 mins

    서버에서 비동기 작업을 위해 celery task 실행시 어떤 비동기 작업이 언제 요청되었는지 기록하기 위한 정리입니다 특히 worker에 문제가 발생했을 때, 어떤 작업이 유실되었는지 파악하기 어려운 문제를 해결하기 위해 Celery의 before_task_publish signal을 사용하여 로그를 기록하는 방법을... Read More

    #celery#python#logging#task-queue
  • Celery 환경별 성능 테스트 및 비교

    2024-01-15 About 3 mins

    Django에서 Celery + SQS 사용시 간단한 테스트 방법을 정리합니다. 테스트 환경 설정 .env 파일에서 celery 설정에 사용되는 환경변수를 수정합니다. 로컬에서 AWS 리소스를 직접 사용할수 있도록 credential 정보를 확인하고 입력합니다. AWS CREDENTIAL - AWS 리소스 접근이 가능... Read More

    #celery#python#task-queue#performance#testing
  • Cloudwatch Log와 Lambda를 이용해 슬랙으로 RDS Slow Query 알림 받기

    2023-08-25 About 18 mins

    이 글에서는 CloudWatch Log와 Lambda 함수를 연동하여 AWS RDS에서 발생하는 Slow Query를 감지하고 Slack으로 알림을 받는 방법을 정리합니다. 전체 흐름 전체적인 구조는 다음과 같습니다. RDS의 Slow Query 발생시 CloudWatch 에 기록합니다. CloudWatch Log에서 ... Read More

    #aws#cloudwatch#lambda#rds#slack#monitoring
  • 특정 IP와 VPC에서만 접근 가능한 S3 버킷 정책 설정하기

    2023-07-03 About 2 mins

    백오피스 제품에서 s3 버킷을 이미지 저장소를 사용하려 하며 계약서류, 사업자등록증과 같은 민감한 이미지가 저장될거라 s3 버킷 정책에 보안 정책을 추가하였습니다. 아래의 조건에서만 버킷 접근이 가능합니다. 회사 vpn 에서만 접근 가능해야 한다 특정 사용자만 접근 가능합니다. 버킷의 특정 디렉토리... Read More

    #aws#s3#iam#vpc#security#policy
  • S3와 CloudFront를 연동하여 정적 콘텐츠 제공하기

    2023-06-15 About 2 mins

    AWS S3는 정적 파일을 서빙할 수 있는 서비스이지만 사용자에게 더 저렴하고 빠르게 콘텐츠를 제공하기 위해서는 CDN 서비스인 CloudFront와 함께 사용하는 것이 좋습니다. CloudFront를 사용하면 사용자와 가까운 엣지 로케이션에 콘텐츠를 캐싱하여 지연 시간을 줄이고, OAI를 통해 S3 버킷으로의 직접 접근을 제어하... Read More

    #aws#s3#cloudfront#route53#cdn
  • CloudFront 캐시 무효화

    2023-05-21 About 1 min

    S3에 웹페이지를 배포하고 Cloud Front를 연결하여 사용할 시 S3내용 변경 후 Cloud Front에 즉시 반영 하고자 한다면 캐시 무효화 작업이 필요합니다. CloudFront 설정에서 무효화 경로를 입력하여 설정 가능합니다. AWS cli로 작업 한다면 다음과 같습니다. aws s3 sync dis... Read More

    #aws#cloudfront#cache#invalidation
  • AWS NLB를 이용한 고정 IP 서비스 제공하기

    2023-05-06 About 11 mins

    외부 고객사나 파트너사가 우리의 서비스에 접근할 때, 보안을 위해 방화벽에 특정 IP 주소를 허용해야 하는 경우가 종종 있습니다. 하지만 AWS ALB는 고정 IP를 제공하지 않아 요구사항을 충족하기 어렵습니다. NLB를 사용하여 고정 IP를 할당하는 방법을 정리합니다 전체적인 구조는 다음과 같습니다 ... Read More

    #aws#nlb#alb#route53#load-balancer
  • 로컬 환경에서 AWS API 호출을 위한 설정 (AWS CLI, MFA)

    2023-04-21 About 5 mins

    로컬 개발 환경에서 AWS SDK 또는 AWS CLI를 사용시 MFA 인증을 통해 임시 토큰을 발급받아 AWS API를 호출하는 방법을 정리합니다. AWS CLI 설치 먼저, 자신의 운영체제에 맞는 AWS CLI를 설치해야 합니다. 설치가 완료되면 터미널에서 다음 명령어로 설치를 확인할 수 있습니다. brew in... Read More

    #aws#cli#mfa#authentication
  • UUID를 Primary Key로 사용시 주의할 점

    2023-03-10 About 5 mins

    개발을 하다 보면 id와 entity_id를 모두 식별자로 사용하게 됩니다. 이때 ‘둘 중 하나만 사용해도 되지 않을까?’ 하는 질문을 받을 수 있습니다. 결론부터 말하자면, PK는 Auto-increment Integer로 사용하고, UUID는 외부 식별자(Surrogate Key)로 사용하는 방식이 여러 이점을 가집니... Read More

    #database#uuid#primary-key#performance#rds
  • 테스트 EKS 환경에 Kubectl로 접근하기 위한 설정 가이드

    2023-01-13 About 3 mins

    개발이나 테스트 과정에서 원격 쿠버네티스 클러스터의 상태를 확인하거나 리소스에 접근이 필요할 때가 있습니다 로컬에서 kubectl을 사용하여 AWS EKS 테스트 환경에 접근하는 방법을 정리합니다. AWS Access Key 생성 먼저 aws 콘솔에서 보안 자격 증명 메뉴에서 access key를 생성합니다... Read More

    #kubernetes#kubectl#aws#eks
  • CircleCI에서 원격으로 helm 제어하기

    2022-11-08 About 15 mins

    문제 AWS EKS API 설정을 Private 환경으로 변경하면서 helm 사용도 제한이 되었습니다. 해결방안 아래와 같은 순서로 CI가 실행되며 4번 단계에서 실패하게 됩니다. 테스트 자동화 이미지 빌드 AWS CLI를 사용하여 ECR에 이미지 업로드 helm을 사용하여 이미지 업그... Read More

    #circleci#helm#kubernetes#devops#ci-cd
  • Terraform Backend를 S3로 변경

    2022-10-17 About 14 mins

    Terraform 으로 AWS 인프라를 관리하고 있으며 EKS API Endpoint 접근 설정을 Private로 변경해야 했습니다. Terraform에서 K8S 관련 리소스에 접근할때 EKS API Endpoint를 사용하므로 Terraform Backend 변경이 필요했습니다. EKS API Endpoint를 ... Read More

    #terraform#backend#s3#state#migration
  • EKS Private 변경 후 bastion에서 API Endpoint 접근

    2022-09-11 About 1 min

    퍼블릭 엑세스였기에 로컬에서 K9S를 사용하여 편하게 사용하였으나 보안 문제로 접근 설정을 수정하기로 하였습니다. EKS 클러스터 엔드포인트 엑세스 설정을 public 에서 private로 수정할 경우 동일한 VPC 또는 연결된 VPC 환경에서만 EKS API Endpoint 접근이 가능합니다. EKS API Endpoint 접근을 Private ... Read More

    #kubernetes#eks#aws#bastion
  • DMARC 적용하여 발신자 정보를 위조 예방

    2022-08-04 About 1 min

    얼마전 회사 메일로 email spoofing 공격에 노출되어 있다는 메일을 받았습니다 보안 연구회사에서 무작위 검사를 통해 보낸 메일이었으나 DMARC 설정이 누락된것을 확인하게 되었습니다. 이번에 작업하면서 DMARC가 무엇인지 내용을 정리합니다. DMARC ? spoofing을 예방하기 위해 만들어진 보안 방법입니다.... Read More

    #dmarc#email#security#dns#anti-spoofing
  • Docker를 사용한 개발환경 구성

    2022-05-02 About 4 mins

    작업 노트북이 M1 Macbook으로 교체하면서 python 패키지 설치시 너무나도 많은 에러에 시달렸습니다. 오류없이 설치할 방법이 없을까 생각하다 도커로 개발환경을 구성해보기로 하였습니다. 현재 회사에서는 AWS ECR로 서비스 이미지를 관리하고 EKS, ECS로 서비스를 운영하고 있습니다 이미 서비... Read More

    #docker#python#development#container
  • postgres Auto-Increment 중복 키 오류 해결 방법 (Sequence 갱신)

    2022-04-12 About 2 mins

    얼마전 개발환경에서 dummy 데이터 추가 작업을 진행하였습니다. 일부 오브젝트 추가시 auto increcement 필드에 값을 직접 입력하여 구성하였습니다. 오브젝트 추가 후 (psycopg2.IntegrityError) duplicate key value violates unique constraint 'id_key' 오류가... Read More

    #postgres#database#sequence#auto-increment
  • AWS Load Balancer Controller 설치시 주의 사항

    2022-04-10 About 1 min

    EKS에서 AWS Load Balancer Controller를 적용시 정책을 필수로 설정해야 합니다. 정책 설정없이 Controller를 구성할 경우 인그레스 연결 작업에서 권한에 대한 에러가 발생하게 됩니다. 정책 생성 아래 공식 문서의 정책 내용을 확인한 뒤 aws console에서 정책을 생성합니다 aws ... Read More

    #kubernetes#eks#aws#alb#load-balancer-controller
  • 로컬에서 ECR 업로드하기

    2022-04-05 About 2 mins

    ECR에 업로드된 도커 이미지를 로컬에서 작업 한 뒤 ECR에 업로드 하는 방법을 정리합니다 ECR 로그인 로컬 docker에 ECR 로그인을 선행합니다 # 도커 로그인 비밀번호 확인 DOCKER_PASSWORD=$(aws ecr get-login-password --region ap-northeas... Read More

    #docker#aws#ecr#container#registry
  • Lambda에 Python 프로젝트 업로드하기

    2022-04-02 About 3 mins

    AWS Lambda에 Flask 서버를 업로드하는 절차에 대해 정리합니다. Lambda docker 이미지 준비 아래 명령어를 사용하여 lambda 이미지를 준비합니다. lambda에서 사용할 python 3.8 이미지를 준비하였습니다. docker pull amazon/aws-lambda-python:3.8 ... Read More

    #docker#lambda#aws#python#deployment
  • 대규모 시스템 설계 기초 - url 단축기 설계 구현

    2022-03-29 About 3 mins

    이전 포스트에 이어 url 단축 서비스를 실제 파이썬 코드로 구현합니다. 코드는 github에서 보실 수 있습니다. schema 단축 url 영속화를 위한 db schema는 아래와 같습니다. field type   id ... Read More

    #system-design#url-shortener
  • 대규모 시스템 설계 기초 - url 단축기 설계 리뷰

    2022-03-25 About 6 mins

    가상 면접 사례로 배우는 대규모 시스템 설계 기초에서 읽은 url 단축기에 대해 정리합니다. 문자 메시지에 url을 포함하여 문자를 발송할때 꼭 필요한 기능이라고 말할수 있습니다. LMS를 보내면 간편하겠지만 LMS 비용은 1건에 25원 정도로 파악됩니다. 기준 SMS 가격은 8~12원 이며 한글 45자,... Read More

    #system-design#url-shortener#architecture
  • Lambda Layer 추가하여 패키지 사용하기

    2022-02-09 About 3 mins

    lambda 로 작업시 python 기본 패키지 이외 다른 패키지를 사용시 패키지 설치가 필요합니다. 소스코드와 패키지 파일도 같이 업로드 하여 사용할 수 있지만 여러개의 lambda 함수를 사용중이라면 layer를 추가하여 패키지를 공통으로 사용하는 방향으로 관리하는것이 좋다고 생각합니다. lambda 도커 이미지... Read More

    #lambda#aws#layer#python#package
  • postgres 쿼리 플랜 확인하기

    2022-01-10 About 2 mins

    postgres explain 명령어로 쿼리 실행 과정을 확인 할 수 있습니다. 실행 과정을 파악하여 쿼리를 최적화 할 수 있습니다. explain 결과로 내용을 파악할 수 있지만 결과를 그래프 형태로 보기 쉽게 변환하는 내용을 정리합니다. Explain 쿼리 작성 실행 과정을 확인할 쿼리를 아래와 같은 형식으로 작성합니다. 사용하기 쉽게 ... Read More

    #database#postgres#visualizer#performance#query-plan
  • postgres 스냅샷 복원 후 성능 저하 문제 해결: VACUUM ANALYZE

    2021-07-03 About 4 mins

    AWS에서 Aurora postgres 를 사용중이었으며 vpc를 변경하는 작업이 있었습니다 cluster 단위에서 vpc 변경은 스냅샷 생성 후 해당 vpc 환경에서 복원하는 방법으로 진행했습니다 문제 cluster 복원 후 모니터링 하던 중 쿼리 속도가 지나치게 느린것을 확인하였습니다. 오래 걸려야 1초가 소비되는 ... Read More

    #postgres#vacuum#performance#database
  • ALB Ingress 에러 확인하기

    2021-07-02 About 1 min

    인그레스 설정 작업중 error가 발생할 경우 확인 방법을 정리합니다. 에러 확인 인그레스 작업 후 작업내용이 로드밸런서에 반영되지 않아 k8s lens를 확인하니 아래와 같이 에러가 발생하였음을 확인했습니다 에러메세지 복호화 AWS 문서에 복호화 방법을 안내하고 있습니다 aws sts decode-authoriza... Read More

    #kubernetes#ingress#aws#alb#troubleshooting
  • Poetry로 Python 패키지 관리하기

    2021-05-21 About 5 mins

    python 패키지 관리 방법 중 기본적인 방법은 pip로 패키지를 설치하고 pip freeze로 requirement.txt 생성하여 패키지 목록을 관리하는 것입니다. 그러나 pip 패키지 설치시 패키지 간 의존성 관계를 무시하고 강제 설치하는 일이 발생 할 수 있습니다. 또한 requirement.txt를 작성 할 때... Read More

    #poetry#python#dependency#package-manager
  • pg_dump와 pg_restore를 이용한 postgres 데이터베이스 마이그레이션

    2021-05-07 About 1 min

    heroku로 운영중인 랜딩페이지를 k8s로 운영하기 위해 heroku에서 사용중인 postgres 을 aws rds 마이그레이션 하는 과정을 정리합니다. pg_dump 와 pg_restore 를 사용하여 쉽게 데이터베이스 백업이 가능합니다. pg_dump -Fc -v -h "ec2-34.compute-1.amazona... Read More

    #postgres#backup#migration#pg_dump#database
  • Terraform 필수 명령어 가이드: init, plan, import, state

    2021-04-11 About 5 mins

    테라폼을 사용하여 인프라를 관리할때 자주 사용하는 패턴과 명령어를 정리합니다 init terraform init 작업 디렉토리를 초기화 합니다. tfenv 를 사용하여 버전을 바꾸거나 workspace를 변경할때 실행해야 합니다. plan 작성한 테라폼 코드의 실행 결과를 확인해 볼 수 있습니다. 실제 인프라에 반영... Read More

    #terraform#devops#iac#aws#infrastructure
  • All43
  • AWS 10
  • Celery 2
  • Database 8
  • DevOps 11
  • MCP 1
  • Python 1
  • React 1
  • Spring Boot 6
  • Testing 1
  • system-design 2
© 2017 dooyeoung all rights reserved.
Powered by Jekyll & Yat Theme.
Subscribe via RSS