개인 프로젝트 Swimcolor에서 AWS 아키텍처가 바뀌게 된 이유
·
클라우드_인프라
개인 프로젝트(Swimcolor)를 개발하면서 AWS 아키텍처들이 점차 변경되었는데, 그 과정을 정리해보려고 합니다.📍 배경개인 프로젝트 Swimcolor를 개발하면서 처음으로 AWS 클라우드 환경을 직접 설계하고 운영해보게 되었습니다.프로젝트는 12월 중순부터 시작했습니다.가능한 빠르게 클라우드 환경에 올려 주변 친구들한테 서비스를 공유하고 피드백을 받고 싶었습니다.(그리고 직접 서비스를 운영할 생각도 있었고요 ㅎㅎ) 현재는 어느 정도 AWS 아키텍처가 안정된 상태입니다.그래서 이번 글에서는 Swimcolor 프로젝트에서 실제로 사용했던 AWS 아키텍처를 기준으로 다음 서비스들의 특징을 정리해보려고 합니다.AWS App RunnerAWS EC2AWS LambdaAWS SQS그리고 시간 순서대로 아키텍..
스프링 트랜잭션 전파 속성별로 실습 해보기
·
Spring
📍 배경인프런 강의 중 김영한님의 "스프링 DB 2편" 을 공부하던 중, 트랜잭션 전파에 대해 공부하다가 각 전파 속성별로 실습을 하고 싶다는 생각을 했습니다.실무에서는 `REQUIRED` , `REQUIRES_NEW` 를 주로 사용한다고 하지만 각 속성별로 어떤 시나리오에서 사용하게 되는지 가정을 해보고 직접 코드를 작성해보며 각 속성별의 차이를 이해하기 위해 실습을 진행하였습니다.📍 트랜잭션 전파란?트랜잭션이 둘 이상 있을 때 어떻게 동작할지 결정하는 것을 트랜잭션 전파라고 합니다.예를 들어, 트랜잭션이 이미 진행 중인 상태에서 새로운 트랜잭션 메서드를 호출했을 때 기존 트랜잭션에 참여할지, 새로운 트랜잭션을 생성할지, 트랜잭션 없이 실행할지 등을 결정하는 것이 전파 속성입니다. 트랜잭션을 이해하..
동기 vs 비동기 / 블로킹 vs 논블로킹 실습 코드로 이해하기
·
CS
📍 배경2024.10.15 - [CS] - 동기vs비동기 , 블로킹vs논블로킹예전에 포스팅한 CS 지식을 체화하기 위해 동기vs 비동기 , 블로킹 vs 논블로킹 실습 코드를 작성을 해보았습니다.현재 제가 진행중인 그룹 스터디에서 주제를 정하고 각자 공부하는걸 발표하는 시간을 가졌었는데요. 저는 이때 실생활에서 볼 수 있는 동기 vs 비동기 , 블로킹 vs 논블로킹 시나리오를 생각하고 이를 java 코드로 구현해 보았습니다.면접때 질문이 들어와도 곧바로 대답할 수 있는 수준이 되기 위해 쉽게 이해하기 쉬운 시나리오와 코드를 포스팅해보겠습니다📍 동기 vs 비동기`동기 vs 비동기` 로 만들어 본 시나리오의 상황은 카페에서 발생할 수 있는 상황들 입니다. 동기는 한 작업이 완료될 때까지 다음 작업은 대기한..
MSA 환경에서 서비스별 Swagger UI를 GitHub Pages로 배포하기
·
CS
🔎 개요개인프로젝트를 MSA구조로 설계하고 각 마이크로서비스마다 주요 기능 개발이 완료된 후, 개발한 API를 한 눈에 볼 수 있는 문서화 페이지가 필요했습니다.Spring Boot와 우수한 호환성으로 기존 코드로 손쉽게 API 스펙을 정의할 수 있어서 Swagger를 선택했습니다또한, 무료 정적 사이트 호스팅을 제공하고 Git 기반으로 쉽게 배포할 수 있어서 GitHub Pages를 사용했습니다 참고 블로그를 찾아보던 중 GitHub에 Swagger API 문서를 공유하기 글을 보게 되었고, 해당 내용을 바탕으로 구현했습니다 🛠️ 백엔드 환경 각 마이크로서비스의 기술 스택은 다음과 같습니다Java : 17Spring Boot : 3.3.5Build Tool : GradleAPI 문서화 : Sprin..
@SpringBootTest, 순수 스프링 컨테이너, @TestConfiguration 정리
·
Spring
SpringBoot에서 테스트코드를 작성하면서 경험한 오류들로 이 포스팅을 작성하게 되었습니다`@SpringBootTest` vs 순수 스프링 컨테이너의 비교와 `@TestConfiguration`에 대해 추가 설명을 작성했습니다 ✅ @SpringBootTest - 통합 테스트의 완전체주요 특징전체 애플리케이션 컨텍스트 로드: 실제 운영 환경과 동일한 조건으로 모든 빈을 로드모든 설정 클래스 스캔: @Configuration, @Component 등 모든 설정을 자동으로 읽음application.properties 자동 로드: 운영 설정 파일을 그대로 사용AutoConfiguration 자동 적용: Spring Boot의 자동 설정 기능 활용🚩 '전체', '모든' 키워드에 집중해야 합니다. 운영코드, ..
금융권에서 오라클 DBMS를 선택하는 이유
·
Data
들어가며금융권에서 차세대 시스템을 구축할 때 가장 중요한 고려사항은 무엇일까요? 바로 절대 실패할 수 없는 시스템의 안정성입니다. 고객의 자산을 다루는 금융 시스템에서 단 1초의 다운타임도 막대한 손실로 이어질 수 있기 때문입니다.오늘은 금융권에서 오라클 데이터베이스를 선택하는 이유와 그 장단점에 대해 자세히 살펴보겠습니다.🏦 금융권이 오라클을 선택하는 핵심 이유1. RAC(Real Application Clusters)의 완성도금융권에서 오라클을 선택하는 가장 큰 이유는 RAC 기능 때문입니다.💡 RAC란?물리적으로 구성된 여러 대의 서버를 하나의 시스템으로 구성하여, 실제로는 여러 대의 서버를 사용하지만 클러스터링 기술을 통해 하나의 데이터베이스처럼 사용할 수 있게 하는 소프트웨어RAC가 금융권에..
Spring Cloud Gateway와 WebFlux 관계 이해하기 (2편)
·
Spring
개인프로젝트를 하던 중 Webflux에서 발견한 문제점과 해결 과정을 공유합니다📍 배경2025.05.06 - [Spring] - Spring Cloud Gateway와 WebFlux 관계 이해하기 (1편) 이전 1편에서는 WebFlux의 기본 개념과 Spring Cloud Gateway가 WebFlux 기반인 이유에 대해 다뤘습니다2편에서는 Spring Cloud Gateway 환경에서 발생할 수 있는 블로킹 이슈와 해결 방법, 그리고 Netty와 Tomcat의 아키텍처 차이점에 대해 더 자세히 알아보겠습니다📍 Spring Cloud Gateway 환경에서 발생한 블로킹 이슈초기 상황Spring Cloud Gateway(이하 SCG)를 사용하면서 프론트엔드 코드가 클라이언트와 가깝다는 이유로 SCG ..
Spring Cloud Gateway와 WebFlux 관계 이해하기 (1편)
·
Spring
개인프로젝트를 하던 중 Webflux에서 생긴 궁금증 입니다.📍 배경처음 개인 프로젝트를 시작했을 때는 모놀리식 구조로 개발했습니다. 객체지향프로그래밍과 JPA에 집중하기 위해서 입니다. 3개의 도메인(고객,예매,SMS) 개발이 어느 정도 틀이 잡힌 이후에는 MSA로의 전환을 결정했습니다. MSA로 전환하는 과정에서는 기존에 유튜브를 보고 MSA 실습을 했던 터라 Spring Cloud Gateway와 Microservice 어플리케이션들을 이미 구현해 놓은 상태였습니다. 서비스를 도메인 기준으로 분리한 이후, 머스타치 파일(View)을 어디로 분리해야하나 고민하다가 Client와 가까운 Gateway 어플리케이션에 넣고 컨트롤러 패키지도 추가해서 각 마이크로 서비스랑 통신해서 데이터를 가져오려고 했습..