2025/05 8

EC2 인바운드 규칙 미설정으로 인한 접속 불가 문제

이번 글에서는 실전 프로젝트에서 생긴 트러블 슈팅 중 하나를 설명해 볼 것이다. AWS EC2 인스턴스를 실행한 후, 로컬에서 테스트했을 땐 잘 작동하던 서버가 브라우저나 포스트맨을 통해 외부에서 접속이 되지 않는 문제가 발생했다.EC2에서 실행 중인 벡엔드 서버는 정상적으로 작동 중이었고, 포트번호도 8080으로 열려 있는 상태였지만 무한로딩이 되는 상황이었다. 🚀 원인 분석문제를 찾아본 결과, AWS EC2 인스턴스의 보안 그룹 설정에서 인바운드 규칙이 제대로 구성되지 않았다는 것을 발견했다.💡 보안 그룹이란?AWS에서 EC2 인스턴스를 보호하는 방화벽 역할을 하는 구성 요소로, 인바운드(들어오는 트래픽)와 아웃바운드(나가는 트래픽)를 제한할 수 있다. EC2 인스턴스의 보안 그룹 인바운드 규칙..

Spring 2025.05.27

실전 프로젝트 - 도서 관리 앱 만들기

짧다면 짧고, 길다면 길 수 있는 약 2주간의 강의(AWS, Docker, 스프링 심화)를 들은 뒤, 곧바로 실전 프로젝트에 들어가게 되었다.실전 프로젝트가 끝나면 바로 최종 프로젝트로 이어지기 때문에, 강의 시간에 배운 내용들을 최대한 활용해보자는 마음가짐으로 진행했다.이번 프로젝트를 마지막 학습 기회라 생각하고, 최대한 스스로 설계하고 구현해보는 데 집중했다. 📚 도서 관리 앱 와이어프레임 ERD 각자 도메인별로 기능을 맡으며 진행하였고, 나는 Book 도메인 기능을 맡게되었다.Book Entity@Entity@Table(name = "book")@NoArgsConstructor@Getterpublic class Book extends TimeStamped { @Id @GeneratedV..

Spring 2025.05.20

Spring AOP란?

Spring 프레임워크를 공부하며, AOP(Aspect-Oriented Programming)가 뭐지? 이게 왜 필요한지? 필터랑 다른 게 뭔지?라는 궁금점이 생겼다. 오늘은 AOP에 대해 개념이랑 적용 방법에 대해 공유해 보려 한다. AOP란?AOP(관점 지향 프로그래밍)는 공통 관심 사항(부가 기능)을 핵심 로직과 분리해서 한 곳에서 관리하도록 해주는 프로그래밍 기법이다. 📌 왜 AOP가 필요한가?프로그램을 개발하다 보면 반복적으로 사용되는 코드나 가독성이 떨어지는 로직들을 자주 마주하게 되는 것을 볼 수 있다.AOP는 이러한 반복되는 코드들을 비즈니스 로직과 분리함으로써 중복을 줄이고, 코드의 유지보수성을 향상시키는 데 큰 도움을 준다. 예시)public class UserService {..

Spring 2025.05.15

QueryDSL 의존성 설정 및 활용

QueryDSL을 사용하기 전에 먼저 QueryDSL이란 무엇인지 알아보자. QueryDSL이란?QueryDSL은 도메인 모델을 기반으로 한 타입 안전(type-safe)한 쿼리 작성 라이브러리 JPA를 쓰다 보면 이런 경험 한 번쯤 해봤을 거다.복잡한 조건을 가진 쿼리문들을 사용하게 되면 JPQL로 하자니 불편하고, 메서드 이름도 길어지고...이럴 때 사용하는 게 바로 QueryDSL이다.QueryDSL은 자바 코드로 SQL을 짤 수 있게 해주는 안전한 쿼리 빌더 타입이다! ✅ QueryDSL 관련 의존성 및 설정QueryDSL을 사용하기 위해서는 다음과 같은 의존성들과 설정이 필요하다.스프링부트3 버전을 사용 중이다. build.gradle 파일plugins { id 'java' id '..

Spring 2025.05.13

AWS - RDS?

저번 프로젝트에 팀 전체가 동일한 DB 환경에서 개발과 테스트를 진행할 수 있도록 하기 위해,AWS RDS(MySQL)를 사용하게 되었다.이번 글에서는 RDS가 무엇인지, 그리고 어떤 역할을 하는지에 대해 자세히 알아보자AWS CCP 자격증을 준비하는 분들이라면, 이 정도 개념만 알고 있어도 시험을 치를 때 충분히 도움될 것이다!AWS RDS란?Amazon RDS (Relational Database Service)는 AWS에서 제공하는 완전 관리형 관계형 데이터베이스 서비스이며,SQL 기반의 데이터베이스(MySQL, PostgreSQL 등)를 AWS 환경에서 손쉽게 설치, 운영, 백업, 복구할 수 있도록 지원한다. 직접 인스턴스를 구성하거나 유지보수하지 않아도 되고,클릭 몇 번으로 고가용성 설정까지 가..

AWS 2025.05.08

AWS - Elastic Beanstalk

AWS Elastic Beanstalk란?Elastic Beanstalk는 애플리케이션 코드만 업로드하면, AWS가 자동으로 다음을 설정하고 운영해 주는 플랫폼이다.즉, Beanstalk는 애플리케이션을 빠르고 쉽게 배포하고 관리할 수 있도록 해주는 Platform as a Service(PaaS)이다. 인프라(EC2, 로드 밸런서, Auto Scaling, 보안 그룹 등)배포 파이프라인운영 체제언어 런타임모니터링 및 상태 관리 배포 아키텍처 모델Elastic Beanstalk은 사용 목적에 따라 다양한 배포 아키텍처를 지원한다. 단일 인스턴스 배포EC2 인스턴스 1개만 실행개발/테스트 환경에 적합 로드 밸런싱 + Auto Scaling 그룹 포함ELB + 다수의 EC2 인스턴스로 구성운영 환경에 적합..

AWS 2025.05.07

DB 동시성 제어(비관적, 낙관적, 분산 락)

동시성 제어란?동시성 제어란, 여러 사용자의 트랜잭션이 동시에 데이터베이스에 접근할 때 데이터의 무결성과 일관성을 보장하기 위한 제어 기법이다.실질적으로 일반적인 웹 애플리케이션은 여러 사용자의 요청을 동시에 처리한다. 이러한 요청들이 동일한 데이터를 가지고 CRUD를 하게 된다면, 동시 접근으로 인해 Race Condition이나 데이터 손상이 발생될 수 있다. 그래서, 여러 요청들을 직렬화된 것처럼 처리해서 데이터 충돌을 막는 것이 동시성 제어의 목적이다. ✅ 동시성 문제가 발생하는 대표 Race CinditionRace Condition이란,여러 스레드가 동시에 같은 자원을 접근하고 수정하려 할 때예상치 못한 결과가 발생하는 문제이다.📌 예) 재고가 1개 남았는데, 두 명이 동시에 주문하면?→ 둘..

Spring 2025.05.02

Spring Boot 테스트, Mocking이란?

테스트 코드는 왜 필수일까? 소프트웨어 개발을 하다 보면 새로운 기능을 추가하거나, 기존 로직을 수정해야 하는 순간이 많아진다.그때마다 예상치 못한 버그가 생길 가능성도 커지기 때문에 테스트 코드는 바로 그 위험을 미리 방지하는 역할을 한다. ✅ 테스트의 3가지 장점신뢰성 향상→ 기능 추가/수정 후에도 기존 기능이 정상 동작하는지 빠르게 확인 가능코드 이해도 증가→ 테스트는 코드의 사용법을 보여주는 살아있는 문서장기적 비용 절감→ 초반 테스트 작성은 비용이 들지만, 나중에 디버깅·유지보수 비용을 줄여준다 ✅ 단위 테스트 vs 통합 테스트 💡 통합 테스트는 실제 HTTP 요청을 보내고, DB 결과까지 확인함으로써, 시스템이 현실처럼 동작하는지 검증할 수 있고,단위 테스트는 쉽게 말해. 실제 DB없이..

Spring 2025.05.01