기존 경험:네이버 소셜 로그인을 로컬 환경에서 성공적으로 구현한 경험이 있으나, 배포 환경에서는 제 계정이 아닌 다른 계정 사용 및 URL
AOP는 관점 지향 프로그래밍으로, 어플리케이션의 핵심 비즈니스 로직과 공통 관심사(cross-cutting concerns)를 분리하여 모듈화하는 프로그래밍 패러다임입니다.여러 클래스에 걸쳐 있는 공통 관심사를 모듈화한 것

MSA(Spring Cloud 기반) 기술 스택과 Spring Security 6 변경 사항오늘은 마이크로서비스 아키텍처(MSA)에서 Spring Cloud 기술 스택의 관계와 동작 순서를 학습했다. Spring Cloud의 다양한 컴포넌트들이 어떻게 협력하여 MSA

오늘 MAS(Microservices Architecture) 강의에서는 분산 시스템에서의 설정 관리와 분산 추적을 중심으로 여러 기술들을 학습했습니다.Spring Cloud Config 중앙 집중식 설정 관리:Git, 파일 시스템, JDBC 등 다양한 저장소를 활용

Starting Assignments API 명세서 테이블 명세서 ERD 명세서 인프라 설계서
Spring Security와 JWT(JSON Web Token)를 활용한 인증/인가 시스템의 내부 동작 원리와 구현 방법. @AuthenticationPrincipal 어노테이션의 동작 방식과 SecurityContext의 관리 방법에 중점. Spring Secu
Spring Data JPA Auditing과 소프트 삭제(Soft Delete) 기능 구현 TIL 기능개발요구서에 stamp 관련 요구가 있어서 구현했습니다. 효율성을 위해 Spring Data JPA
아래는 Spring Security와 JWT를 활용하여 로그인, 회원가입, 로그아웃 기능을 구현하면서 겪은 모든 과정을 정리. 1. 설계 내용 Spring Security와 JWT 사용 Spring Security를 통해 아이디/비밀번호 인증을 처리하고, 인증
Java Arrays & Collections Java에서 배열을 다룰 때 필수적으로 사용하는 Arrays 클래스와 컬렉션을 다룰 때 유용한 Collections 클래스에 대해 정리. 🔹 1. Arrays 클래스란? java.util.Arrays 클래스는 배열을 다

프로젝트 끝!워밍업이라 생각하고 가볍게 했는데, 고민을 많이한 다른 팀을을 보고 살짝 반성.그래도 해보고 싶었던걸 해보는 (flask, spring 연동 & supabase) 좋은 기간이었다.프로젝트명: 삼식이진행 기간: 2025.02.12 ~ 2025.02.26 (
Docker Network와 Docker Compose를 활용해 여러 서비스를 연결하는 방법.이번 실습에서는 두 개의 스프링 부트 서비스(service-a, service-b)를 Docker 컨테이너로 실행하고 서로 통신하도록 구성했습니다.Service A (appli
1. 문제 상황 증상 ECS 배포 과정에서 테스크(Task)가 헬스 체크를 통과하지 못해 “Unhealthy”로 표시되고, 자동으로 중단됨. 구체적으로는 로드 밸런서(ALB)가 사용하는 타겟 그룹(Target Group)에서 실패 로그(“Task failed
### **✔ 해결 과정 정리** 1. **`toCharArray()`** 를 이용해 **문자열을 `char[]` 배열로 변환** 2. **`Arrays.sort(arr)`** 를 이용해 **오름차순 정렬** - Java의 기본 정렬 규칙에 따라, **대문
Redis는 Remote Dictionary Server의 약자로, Java의 Map과 같은 Key-Value Store 방식으로 데이터를 저장하는 NoSQL 데이터베이스입니다. 인메모리 데이터베이스 데이터를 메모리에 저장하여 고속 읽기/쓰기 성능을 제공합니다.변경
문제: 두 개의 자연수(1 이상 1,000,000 이하)를 입력받아, 두 수의 최대공약수(GCD)와 최소공배수(LCM)를 구하는 함수를 작성합니다.예시: 입력: 3, 12 출력: 3, 12 설명: 3과 12의 최대공약수는 3, 최소공배수는 12입니다.기본 원리:두
오늘의 알고리즘 문제는 숫자를 3진법으로 변환한 후, 이를 다시 10진법으로 변환.이를 구현하는 동안 내가 시도한 코드와 다른 사람의 풀이를 비교하며 오류와 최적화 포인트를 분석했다.주어진 숫자 n을 3진법으로 변환하는 방법은 나머지 연산(% 3)과 몫 연산(/ 3)을
\*\*📌 Gemini AI 기반 메시지 생성 및 검증 시스템 (이중 대화 채널 구조 적용)1️⃣ 개요: Gemini AI의 두 개의 채팅 대화를 활용한 메시지 생성 및 검증\*\*첫 번째 채팅 대화 (생성용) → 배송 정보를 입력받아 Slack 메시지를 생성두 번째
📌 TIL: DFS를 활용한 삼총사 문제 해결 그동안 쉬운 알고리즘만 풀다가 오랜만에 기법을 쓰는 알고리즘을 푸니 가물가물하다. 매일매일 풀 거니 확실하게 정리하고 가자! 🚀 📌 문제 분석 number 배열에서 3명의 학생을 선택했을 때, 합이 0이 되는 경우의
문제를 읽은 순간 아스키 코드를 활용해야겠다는 생각이 들긴 했다. 근데, string을 char로 변환하고, 공백 처리, z->a로 변환할 엄두가 안 났다. switch문을 이용하기에는 너무 노가다.... 생각이 구체화가 안되어서 결국 외부 찬스.......접근은 맞
1. Pageable을 쓰는 이유 대용량 데이터를 한 번에 전송하면 성능 저하와 사용자 경험 문제를 야기할 수 있습니다. 따라서 클라이언트에게 필요한 일부 데이터만 전달하는 페이지네이션은 매우 중요한 기능입니다. Spring Data JPA는 기본적으로 Pageab
📌 TIL: 숫자 문자열 변환 문제 해결 과정 이번 문제는 문자열에서 영어로 된 숫자를 숫자로 변환하는 문제였다. 처음에는 직접 문자열을 비교하며 해결하려 했지만, 여러 가지 놓친 부분이 많았다. 다양한 접근 방식을 고민하며 배운 점들을 정리. 알고리즘 문제 :
TIL: Spring Data JPA Soft Delete 구현 및 디버깅 과정 1. 초기 구현 및 문제 발생 BaseEntity 구현 엔티티의 공통 속성으로 createdDateTime, modifiedDateTime 등과 함께 soft delete를 위한

Slack은 팀 커뮤니케이션 도구일 뿐 아니라, 다양한 자동화와 알림 시스템을 연동할 수 있는 강력한 API를 제공합니다. 이 글에서는 Java(Spring) 기반 서버에서 Slack 봇을 활용해 사용자에게 DM(Direct Message)을 보내는 과정을 소개합니다.
Today I Learned: MSA(Microservices Architecture) 환경에서 각 서비스는 독립적으로 동작해야 하므로,도커(Docker) 컨테이너로 실행하기에 앞서 “JAR 파일”을 준비하는 과정이 필수적입니다.Gradle로 Spring Boot 애플
마이크로서비스 아키텍처(MSA)를 도입하게 되면 단일 데이터베이스 환경에서 보장되던 트랜잭션의 원자성(Atomicity)을 보장하기가 어려워집니다. 이런 상황에서 분산 트랜잭션을 안전하게 처리할 수 있는 방법이 바로 Saga 패턴입니다. Saga 패턴이 필요한 이유
최근 Next.js 프로젝트를 GitHub Pages에 배포하는 방법에 대해 고민하면서 여러 설정과 배포 방식을 직접 경험해보았습니다. 이번 포스트에서는 Next.js의 정적 내보내기(next export) 기능과 GitHub Actions를 활용하여 자동으로 배포하
짧은 기간에 많은 실습, 프로젝트를 하니까 docker가 용량을 많이 잡아 먹는다. docker desktop에서 container, volume, build를 지워도 생각보다 용량이 안 줄었다. 찾아보니 캐시(RECLAIMABLE)가 남아있었던 것. 메모리 확인
강의를 따라하는데, Mac 환경인 강의에서는 docker network설정 없이 'host.docker.internal'만 해도 연결이 잘 되는 것 같다. (spring boot는 로컬에서 실행) 하지만, window 환경에서 따라해보니 컨테이너간 통신이 안 되서
2개월 동안 다양한 사람들과 프로젝트를 여러번하니까 내가 부족했던 부분들을 알게 된다. 오늘은 API 설계에서 디테일이 부족했음을 느끼고 관련 내용 정리. API(Application Programming Interface)는 서비스 간 연결을 가능하게 해주는
Setter를 지양하는 주된 이유는 DTO와 같은 데이터 전달 객체를 불변(immutable)하게 만들어, 데이터의 예측 가능성과 안전성을 높이기 위함입니다. Setter를 지양하는 이유 불변성 유지: 안정성: 한 번 생성된 객체의 상태가 변경되지 않으면, 데
🧭 1. DDD 구조 속 계층별 DTO 역할 DDD 혹은 헥사고날 아키텍처에서는 계층마다 관심사와 책임이 다르기 때문에, 각 계층에 맞는 DTO를 별도로 두는 것이 권장됩니다. ✅ Controller 계층의 DTO (Web Request/Response DTO)
소프트웨어 설계 원칙 중에서도 캡슐화(Encapsulation)와 개방-폐쇄 원칙(Open-Closed Principle, OCP)은 유지보수성과 확장성을 높이는 데 핵심적인 역할을 합니다. 이번 포스팅에서는 생성자를 제한하여 객체 생성 로직을 캡슐화하고, 이를 통
Spring Boot 3.x에서 Zipkin을 이용한 분산 추적 구현 Spring Boot 3.x 환경에서 Zipkin을 이용한 분산 추적 시스템을 구축하는 방법과 발생할 수 있는 문제점 정리. 1. Spring Cloud Sleuth에서 Micrometer Tr
목적 : 분산 트랜잭션 기반으로 대회 신청 과정을 안정적·확장 가능하게 처리기술 스택 : Spring Boot 3, Kafka, Redis, PostgreSQL, Docker Compose, Zipkin/Prometheus, JPA + Hibernate아키텍처 스타일
Aggregate는 관련 있는 객체들을 하나의 군(Cluster)으로 묶고, 일관성을 보장해야 할 경계를 정의하는 개념입니다.이 묶음의 루트 엔티티를 Aggregate Root라고 부릅니다.외부에서는 이 Aggregate Root를 통해서만 내부 엔티티에 접근하거나 변
gRPC와 GraphQL의 개념·아키텍처·주요 특징을 살펴보고, 두 기술의 차이점 및 적합한 사용 시나리오를 정리.gRPC는 Google이 공개한 오픈소스 RPC(Remote Procedure Call) 프레임워크 서비스 간 호출을 메소드 호출처럼 구현할 수 있도록
JPA에서 상속 관계 매핑은 객체 지향의 상속 개념을 관계형 데이터베이스에 효과적으로 매핑하는 방법을 제공합니다. @Inheritance 어노테이션을 사용하여 구현할 수 있으며, 크게 세 가지 전략이 있습니다.부모 클래스와 자식 클래스를 각각의 테이블로 매핑하고, 조인
Next.js 프로젝트에 SEO를 적용하는 방법.SEO(Search Engine Optimization, 검색엔진최적화)는 웹사이트가 검색엔진(주로 Google)의 크롤링·색인·랭킹 알고리즘에 잘 노출되도록 하는 일련의 활동입니다. 웹페이지 내부 요소를 최적화하여 검색
TIL (Today I Learned) – 귤 할인 목록 슬라이딩 윈도우 시뮬레이션 문제 정리📌 학습일: 2025-04-30📝 주제: 고정 길이 슬라이딩 윈도우 + 해시맵 카운팅을 활용해, 연속된 할인 기간 내에 원하는 상품 수량을 만족하는 구간 개수 구하기주어진
기존 소셜 로그인의 문제점 기존에는 소셜 로그인 후 JWT토큰은 URL에 전달했다. 기존에 구현했던 소셜 로그인 방식은 다음과 같은 문제점이 있었다: 이 방식의 주요 문제점: URL 길이 제한으로 인해 토큰이 잘릴 수 있음 URL 파라미터로 토큰을 전달하면 브라우
프로젝트에서 실행한 SEO 개선 과정을 전체 흐름에 따라 정리하면 다음과 같습니다. 이는 검색 엔진 최적화(SEO)를 위한 기초 → 구조 → 콘텐츠 → 자동화의 전형적인 개선 프로세스를 잘 따르고 있습니다. ✅ 청약플래닛 SEO 개선 전체 과정 정리 ✅ 1단계. 검

개인 프로젝트를 운영하며 가장 짜릿한 순간은 내가 만든 서비스가 검색 결과 첫 페이지에 걸리고, 실제 유입으로 이어지는 것을 볼 때가 아닐까 싶습니다. 처음에는 "구글 서치 콘솔에 등록만 하면 되겠지"라는 가벼운 마음으로 시작했습니다. 하나 둘 지표가 생기니까 욕심이

1. 기능 요청을 Work Item으로 관리 2. Agent가 열린 Work Item을 조회 3. staged diff와 Work Item을 비교 4. commit message에 관련 #ID를 추천 5. Work Item이 없다면 생성을 제안