Posts
Dev Joon
Cancel

선언형 프로그래밍(declarative programming)과 명령형 프로그래밍(imperative programming) 비교

TL; DR 선언형 프로그래밍은 what 에 집중 명령형 프로그래밍은 how 에 집중 간단한 예시를 통한 비교 길을 걷는 중에 누군가 “일산 이케아까지 어떻게 가야 하나요?” 라고 물었다고 해보자. 선언형과 명령형 프로그래밍이 대답한다면 다음과 같이 대답할 수 있을 것이다. 선언형(what) : “경기 고양시 덕양구 권율대로 4...

[nginx] rate limit 설정으로 인한 503 Service Unavailable 오류 해결 과정

개요 nginx를 이용해 API 요청을 백엔드로 리버스 프록싱했지만, 프론트엔드에서 백엔드로 보낸 요청의 응답으로 503 Service Unavailable오류를 반환하는 문제가 발생했습니다. 이 글에서는 해당 오류의 원인과 해결 과정을 정리했습니다. 결론부터 말하자면, 문제의 원인은 DDoS 공격을 방지하기 위해 사용했던 nginx의 rate l...

[Spring] IntelliJ java: package org.springframework.boot does not exist 오류 해결

실행 환경 OS : MacOS Catalina (10.15.7) IDE : IntelliJ 2023.1.3 (Ultimate Edition) JDK : openjdk17 Build Tool : Gradle 문제 상황 spring initializer를 이용해서 초기 프로젝트 파일을 다운 받고, IntelliJ에서 sprin...

[Java] JDA, cron, Docker를 활용한 Discord 메시지 전송 Bot 만들기

개요 Discord 채널에 정해진 시간에 메시지를 자동으로 전송하는 방법을 정리했습니다. JDA(Java Discord API) 라이브러리를 이용해서 간단한 코드를 작성하고, Docker 이미지로 패키징한 실행 파일을 cron을 이용해서 컨테이너로 주기적으로 실행했습니다. 개발 배경 취업 스터디를 운영하며 아래와 같은 두 가지 규칙을 정했습니다....

[ArgoCD] AppProject 생성 및 RBAC 설정 가이드

개요 ArgoCD는 여러 팀이 공유하여 사용하는 환경에서 애플리케이션을 효과적으로 관리할 수 있도록 Project(AppProject) 개념을 제공합니다. 이를 통해 애플리케이션을 논리적으로 구분하고, 특정 소스, 클러스터, 네임스페이스에 제한을 두는 등 다양한 관리 기능을 제공합니다. 또한, 프로젝트별 RBAC(Role-Based Access Co...

[ArgoCD] Kustomize를 사용한 Notification 템플릿 관리 및 배포

개요 Kustomize를 사용하면 Kubernetes 리소스를 효율적으로 구성하고 관리할 수 있습니다. 이 글에서는 ArgoCD Notification의 트리거와 템플릿 구성을 여러 ConfigMap 파일로 분리한 뒤, Kustomize를 이용해 하나의 ConfigMap으로 병합하고 배포하는 과정을 다룹니다. 이를 통해 복잡한 Notification...

[AWS] Route 53 계정 간 도메인 이전 및 ACM 인증서 발급 방법

개요 AWS Route 53에서 구매한 도메인을 서로 다른 AWS 계정으로 이전하는 방법과 AWS Certificate Manager(ACM)을 이용해 HTTPS 통신을 위한 인증서를 발급하는 과정을 정리했습니다. 상황 AWS 계정 A와 B가 있다고 가정합니다. 계정 A에서 Route 53을 통해 구매한 도메인의 소유권을 계정 B로 이전하...

[Spring] DTO 입력 값 검증하기 (Bean Validation 활용)

개요 컨트롤러에서 DTO를 통해 전달받는 클라이언트의 요청의 입력 값에 제약 조건을 설정하기 위해 Spring Bean Validation을 활용하는 방법을 정리했습니다. 도입 배경 프론트엔드에서 작성된 게시물 본문의 길이는 최대 1,000자까지만 제한하는 규칙을 정했습니다. 이를 처리하기 위해 백엔드에서 아래와 같은 DTO를 통해 요청을 받습니...

[ArgoCD] Notification default trigger 설정 방법

개요 ArgoCD Notification 기능을 활용하면 배포하는 애플리케이션에 대해 기본으로 작동할 트리거를 설정할 수 있습니다. 기본 트리거를 설정하면 모든 Application 객체나 Rollout 객체에 동일한 트리거를 한 번에 설정할 수 있어 설정 과정이 간소화됩니다. default trigger 적용 전 # demo-hpa-rollou...

[Slack] Incoming Webhook 설정 방법

개요 ArgoCD에서 Webhook을 이용한 알림 전송을 위해 Slack의 Incoming Webhook URL을 생성하는 방법을 정리했습니다. (2024.06.21 기준) Incoming Webhook Incoming Webhook URL로 정해진 형식에 맞춰 데이터를 전송하면 Slack의 특정 채널에 아래의 이미지와 같이 메세지를 보내줍니다....