개발 7

[공부] 공부하면서 왜 필요한지 생각해보기 (왜?).. @Transactional..

@Transactional 어노테이션은 왜 사용하는가? 트랜잭션 관리가  필요한 메서드에 붙여주는 어노테이션이다.트랜잭션은 여러 작업을 하나의 단위로 묵어서, 모든 작업이 성공적으로 완료되었을 때만 커밋하고, 그렇지 않으면 모두 롤백하는 방식이다.언제 Transaction을 사용하는가?그전에 트랜잭션이란 무엇일까? 트랜잭션은 "더이상 분할이 불가능한 업무의 처리 단위"를 의미한다고 한다. 한꺼번에 수행되어야 할 일련의 연산모음을 의미한다고 한다. 밑에 있는 예시와 같이 ATM기로 돈을 송급한다고 가정할 때 A에서 B로 송금을 했을 때 A에서는 차감이 되었지만 B에서 입금이 되지 않다면 그것은 심각한 문제일  것이다. 따라서 이 두 과정은 동시에 성공하거나 실패해야한다. 이러한 과정을 동시에 묶는 밥법이 ..

개발 2024.12.03

[MSA] Spring Cloud Gateway를 통해 서비스간 라우팅 해보기

FirstService,SecondService  우선 프로젝트를 하나 생성해준다. FirstService와 SecondService를 생성했으며 의존성은 Lombok, Spring Web, Eureka Discovery Client를 추가해주었다. 여기서 각각의 기능은?Lombok: 자바 코드에서 반복적으로 작동되는 코드를 줄여주는 라이브러리 예를 들어  1. Getter/Setter 자동생성: @Getter, @Setter 애노테이션을 사용해서 클래스 필드에 대해 자동으로 게터와 세터 메서드를 생성함2. 생성자 자동 생성: @NoArgsConstructor, @AllArgsConstructor 등을 사용해서 다양한 형태의 생성자 자동으로 생성 가능 Spring Web: 스프링 애플리케이션에서 웹 애플..

개발/MSA 2024.11.30

Spring Cloud..?

마이크로 서비스 아키텍처를 지원하기 위한 프레임워크가 Spring Cloud 다.  스프링 클라우드를 이용해서 애플리케이션을 구축하려고 할 때 기본적으로 어떠한 내용을 구성해야 하는지 어떤 서비스가 사용되어야 하는지에 대해서 정리를 한번 더 해보도록 하자.     Spring Cloud를 통한 마이크로서비스 구축:  필수 구성 요소 1. 중앙화된 환경 설정 관리(Centralized configuration management) 마이크로서비스 환경에서는 각 서비스가 독립적으로 운영되지만, 모든 서비스가 동일한 환경 설정을 공유하는 것이 중요하다. 이를 위해 Spring Cloud Config Server를 활용할 수 있다. 이 서버는 외부 저장소를 통해 설정 정보를 관리하고, 다양한 마이크로서비스에서 이..

개발 2024.11.27

[MSA] SOA와의 차이점은 뭘까?, REST Maturity Model

Service를 지향하는 아키텍처 SOA와의 차이점은 무엇일까요? SOA : 재사용을 통한 비용 절감 MSA : 서비스 간의 결합도를 낮추어 변화에 능동적으로 대응 -> 하나의 서비스와 연결되는 다른 서비스와의 관계를 줄인다.만약 회원가입이라는 마이크로 서비스에서 저장된 회원 목록 데이터가 결제라는 마이크로 서비스에서 사용되기 위해서는 두 개의 서비스가 연결되거나, 결제 서비스에서 직접 회원가입 서비스에 데이터베이스에 접속해서 데이터를 사용하는 방식이 아니라, API를 통해서 데이터를 요청해서 사용해야하고, 회원가입 서비스에 문제가 생길 시에도 결제 서비스에는 직접적인 영향을 주지 않고 우회할 수 있는 서비스로 제공할 수 있도록 구현된 것이 마이크로 서비스들의 관계라고 볼 수 있다.  즉 서비스 공유를 ..

개발/MSA 2024.11.27

[MSA] 12-Factors App? +3

클라우드 네이티브 애플리케이션을 구축함에 있어 고려해 봐야 할 12 가지 항목에 대해 알아 보았다.  12 팩터스는 클라우드 서비스 중 플랫폼 애저 서비스 즉 파스라라는 형태의 서비스 형태를 제공하는 Heroku 라는 플랫폼에서 제시한 12가지 항목으로서 클라우드 네이티브 애플리케이션을 개발하거나 서비스를 운영할 때 고려해야 될 항목을 정리한 것이다.  1. 코드베이스 (Codebase)설명: 애플리케이션은 반드시 단일 코드베이스를 가져야 하며, 버전 관리 시스템(Git 등)을 사용하여 관리해야 한다.핵심 내용:여러 애플리케이션은 서로 다른 코드베이스를 사용한다.동일한 코드베이스가 여러 배포 환경(개발, 테스트, 운영)에서 사용될 수 있다. 자체 레파지토리에 저장된 각 마이크로 서비스에 대한 단일 코드베..

개발/MSA 2024.11.26

[MSA] Cloud Native Application, Anti-fragile 특징

2010년도 이후부터 IT 시스템은 클라우드 네이티브, Anti-fragile 아키텍처 형태로 발전되어 왔다. 확장 가능한 아키텍처 (scale-up, scale-out으로 나눌 수 있다.) 원래라면 물리적인 서버, 하드웨어를 업그레이드를 해야 하지만 클라우드 네이티브에서는 가상의 서버, 가상의 스토리지를 이용하여 이러한 비용을 줄일 수 있다.서버 가상화는 필수적이다.시스템의 수평적 확장에 유연하다.확장된 서버로 시스템의 부하 분산, 가용성 보장시스템 또는, 서비스 애플리케이션 단위의 패키지 (컨테이너 기반 패키지)체계적인 모니터링을 통해 상태를 지속적 관리  탄력적 아키텍처 분리된 독립적 서비스로 구성을 함 서비스 생성 - 통합 - 배포, 비즈니스 환경 변화에 대응 시간 단축분할된 서비스 구조무상태 통..

개발/MSA 2024.11.26

[개발] 클라우드 네이티브?... MSA...?

Micro Service Architecture로 개발을 진행해보면 어떨까해서 이 글을 씁니다.. 클라우드 네이티브가 무엇일까요? 클라우드 환경에서 잘 운영되도록 설계된 소프트웨어 개발 방법을 말한다 현재 정부 차원에서 클라우드 네이티브를 지원하고 있다.  왜 지원? 효율적인 자원 관리: 필요한 자원을 필요할 때만 사용하므로 낭비를 줄이고 비용을 절감할 수 있음, 정부는 세금으로 운영되기 때문에 이런 효율을 높이는 것이 중욯요함. 유연한 시스템: 클라우드 네이티브는 시스템을 유연하게 확장하거나 축소가 가능하다. 특정 서비스가 인기 있어지면 더 많은 자원을 제공하고, 덜 사용되면 자원을 줄여서 환경에 대응 가능.고객 요청이 몰리는 시간대에서는 서버를 자동으로 늘리고 한가한 시간에는 줄일 수 있다.예시:..

개발 2024.11.25