Study
-
[SpringBoot] 10주차 AWS 클라우드 배포, CI/CD 자동화 및 HTTPS 무중단 보안 적용Study/SpringBoot 2026. 6. 10. 12:05
로컬(내 컴퓨터)을 벗어나 전 세계에서 접속할 수 있는 '클라우드 환경'에 프로젝트를 띄웠다. 단순히 서버에 코드를 올리는 것을 넘어, 코드를 수정하고 GitHub에 푸시(Push)만 하면 알아서 서버에 반영되는 CI/CD 자동화와 보안을 위한 HTTPS 적용까지 백엔드 배포의 전체 라이프사이클을 완성해 보았다.이번 주차 공부 내용Infrastructure: AWS EC2(서버) 및 RDS(데이터베이스) 생성CI/CD: GitHub Actions를 활용한 빌드 및 자동 배포 파이프라인 구축Security: 도메인 연결 및 HTTPS(SSL) 인증서 적용Documentation: 프로젝트 아키텍처 및 README 정리 기능 구현 Flow (코드 및 인프라 로직)Step 1. AWS 클라우드 인프라 구축: ..
-
[SpringBoot] 9주차 테스트 코드(JUnit/Mockito) 자동화 및 Docker 가상화 인프라 배포Study/SpringBoot 2026. 6. 6. 22:10
9주차에서는 그동안 Postman이나 Swagger를 통해 직접 확인하던 API 테스트를 자동으로 검증하도록 만드는 테스트 자동화(Test Automation)와, 로컬이 아닌 어떤 환경에서도 동일하게 서버가 돌아갈 수 있도록 Docker 컨테이너 가상화 배포를 진행하는 과정을 다룬다. 이번 주차 공부 내용단위 테스트(Service, Controller 계층) 및 통합 테스트(Integration) 작성 + 가짜 객체(Mock) 주입 및 Given-When-Then 패턴의 이해Dockerfile 작성 및 이미지 빌드로컬(Mac)과 가상 환경(Docker) 간의 네트워크 연동 및 포트 충돌 해결 기능 구현 Flow (코드 로직)Step 1. Service 단위 테스트: 순수 비즈니스 로직만 빠르게 검증하기..
-
[SpringBoot] 8주차 외부 API 연동, Redis 연결, 그리고 TTL(Time-To-Live) 설정Study/SpringBoot 2026. 5. 28. 18:07
8주차에서는 7주차까지 진행한 내부 데이터베이스(MySQL) 작업에서 확장하여, 외부 시스템과 데이터를 주고받고 이를 메모리에 캐싱하여 조회 속도를 개선하는 과정을 다룬다.이번 주차 공부 내용외부 API 선택 및 호출 API 작성Redis 연결TTL 설정 후 캐시 테스트 기능 구현 Flow(코드 로직)Step 1. 외부 API 연동: 서버 밖의 데이터 가져오기 (RestTemplate) 지금까지는 서버 내부의 DB(MySQL) 데이터만 다루었다면, 이제는 외부 시스템의 데이터를 우리 서버로 끌어와야 한다. 오픈 API(JSONPlaceholder)를 활용해 외부 데이터를 조회하는 로직을 구현했다.DTO Design: 외부 API의 JSON 응답 규격에 맞추어 데이터를 받아낼 ExternalTodoResp..
-
[SpringBoot] 7주차 게시글 + 댓글 동시 저장 서비스 작성, 예외 케이스 적용, 인덱스 생성Study/SpringBoot 2026. 5. 20. 18:07
6주차에서 페이지네이션과 N+1 문제 해결을 통해 '조회' 성능을 튜닝했다면, 7주차의 핵심은 '저장'의 안정성과 '검색' 속도, 그리고 '예외'의 통제다.사용자가 글을 작성함과 동시에 첫 댓글을 함께 등록하는 API가 있다고 가정해 보자. 게시글은 DB에 저장되었는데 에러로 인해 댓글 저장이 실패한다면, 이러한 데이터를 사전에 방지하는 Transaction의 강력함과, 수백만 건의 데이터가 쌓였을 때 검색 속도를 빠르게 하는 줄 Index 설정, 그리고 예외 케이스 적용 과정을 기록한다.이번 주차 공부 내용게시글 + 댓글 동시 저장 서비스 작성예외 케이스 적용인덱스 생성 기능 구현 Flow(코드 로직)Step 1. 게시글 + 댓글 동시 저장 서비스 (Transaction) 하나의 API 요청으로 두 개..
-
[SpringBoot] 6주차 페이지네이션(Pagination), N+1 문제 해결Study/SpringBoot 2026. 5. 7. 15:43
지난 주차에 인증/인가 로직을 구현하여 게시판의 뼈대를 완성했다. 이번 주차의 핵심 과제는 데이터 최적화다. 게시글이 10만 개가 넘어가는 상황에서 전체 데이터를 한 번에 조회하면 서버 메모리와 네트워크에 엄청난 부하가 걸린다. 이를 해결하기 위해 데이터를 필요한 만큼만 잘라서 보여주는 페이지네이션(Pagination)을 도입하고, 게시글 목록과 작성자 정보를 함께 가져올 때 발생하는 ORM의 고질적인 성능 저하 원인인 N+1 문제를 해결한 과정을 정리한다.이번 주차 공부 내용게시글 목록 API 작성 -> 페이지네이션 구현N+1 문제 해결 📌 N+1 문제는 무엇이며, 왜 발생하는가? 데이터베이스와 ORM(JPA)을 다룰 때 가장 주의해야 할 성능 저하 원인이 바로 N+1 문제이다. 연관 관계가 설정된..
-
[SpringBoot] 5주차 JWT 인증/인가(회원가입 및 로그인) API 구현Study/SpringBoot 2026. 4. 30. 16:23
이번 주차에는 기존 게시판의 글을 작성할 때 단순 문자열로 비밀번호를 받고, 수정/삭제 시 그 문자열을 대조하는 형태를 수정했다. 작동은 하지만 게시글의 진짜 주인을 식별할 수는 없는 불안정한 구조였다. 이를 해결하기 위해 Spring Security와 JWT 라이브러리를 의존성에 추가하고 본격적인 회원(Member) 도메인을 설계했다. 이번 주차 공부 내용 회원 가입, 로그인 API 구현 비밀번호 암호화 저장 JWT 기반 인증 토큰 발급 JWT 필터 기반 암호화 API 구현 기능 구현 Flow(코드 로직) Step 1. 회원가입 & 비밀번호 암호화 저장 (BCrypt)회원가입 시 클라이언트가 보낸 비밀번호(예: "1234..
-
[SpringBoot] 4주차 게시판(수정, 삭제), 댓글(생성, 삭제) API 구현 및 Swagger 명세화Study/SpringBoot 2026. 4. 2. 20:36
저번 주에 이어 이번 주는 서비스의 필수 요소인 게시글 수정/삭제 및 댓글(Comment) 기능을 추가하여 MVP(Minimum Viable Product)를 고도화했다. 또 Swagger를 추가하여 테스트에 용이하게 했다. 또 게시글을 코드 플로우로 작성하여 전체적으로 넓게 볼 수 있도록 유도하였다.이번 주차 공부 내용게시글 수정 및 삭제 API 구현(Update & Delete Post API)댓글 생성 및 삭제 API 구현(Create & Delete Comment API)작성자 권한 검증 로직 추가(Author Validation & Authorization Logic)Swagger API 문서 도입 및 테스트(API Documentation & Testing with Swagger UI) 기능 ..
-
[SpringBoot] 3주차 ERD 설계, Docker 연결 및 생성 조회 API 구현Study/SpringBoot 2026. 3. 26. 15:17
이번 주차에는 백엔드 기초인 ERD 설계와 Docker 구성 및 DB 연결, 그리고 게시글 생성/조회 API를 구현했다.이번 주차 공부 내용ERD 설계(Database ERD Design)Docker 환경 구성 및 DB 연결(Dockerizing MySQL)게시글 생성 API 구현(Create Post API)게시글 상세 조회 API 구현(Read Post API) ERD란 : ERD(Entity-Relationship Diagram)란 데이터베이스의 구조를 한눈에 볼 수 있도록 그린 데이터 설계도이다. 서비스에서 다루는 정보(Entity)들이 무엇인지, 그리고 그 정보들이 서로 어떻게 연결(Relationship)되어 있는지를 논리적으로 표현한다. 📌 ERD의 핵심 구성 요소엔티티 (Entity):..