profile
좋은 습관이 나를 더 좋은 개발자로 만든다.
post-thumbnail

마이크로 서비스 아키텍처: 회복 시스템 (이론)

모든 시스템, 특히 분산 시스템은 장애를 겪는다. 이러한 장애에 대응하는 애플리케이션 구축 방법을 찾는 것은 모든 소프트웨어 개발자에게 중요한 일이다. 하지만 회복력을 갖춘 시스템을 구축하는 것에 대해 대부분의 소프트웨어 엔지니어는 일부 인프라 스트럭처나 핵심 서비스의

2일 전
·
0개의 댓글

마이크로 서비스 아키텍처: 디스커버리

INTRO 분상 아키텍처에서는 시스템의 물리적 위치 주소를 찾아야 한다. 이 개념은 분산 컴퓨팅 초창기때부터 존재했고 공식적으로 서비스 디스커버리라고 한다. 서비스 디스커버리는 애플리케이션에서 사용하는 모든 원격 서비스의 주소가 포함된 프로퍼티 파일을 관리하는 것 처럼

2022년 6월 25일
·
0개의 댓글
post-thumbnail

4. 엔티티 매핑: 고급 매핑

관계형 DB는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입과 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다.슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현시 3가지 방법을 선택할 수 있다.각각의 테이블료 변환: 위의

2022년 6월 22일
·
0개의 댓글
post-thumbnail

3. 엔티티 매핑: 다양한 연관관계 매핑

다대일 관계의 반대 방향은 항상 일대다 관계이고 일대다 관계의 반대 방향은 항상 다대일 관계다. DB 테이블의 일, 다 관계에서 외래키는 항상 다쪽에 있다. 따라서 객체 양방향 관계에서 연관관계의 주인은 항상 다쪽이다.양방향 연관관계는 항상 서로를 참조해야 한다.양쪽에

2022년 6월 22일
·
0개의 댓글
post-thumbnail

2. 엔티티 매핑: 연관관계 매핑

엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 그런데 객체는 참조를 사용해서 관계를 맺고 테이블은 외래키를 사용해서 관계를 맺는다. 기본개념에서 보았듯 이 둘은 완전히 다른 특징을 가진다.객체 관계 매핑(ORM)에서 가장 어려운 부분이 바로 이 객체 연관관계와 테이

2022년 6월 19일
·
0개의 댓글
post-thumbnail

1. 엔티티 매핑: 기본 개념

JPA를 사용하는데 가장 중요항 일은 엔티티와 테이블을 정확히 매핑하는 것이다. 따라서 매핑 애노테이션을 숙지하고 사용해야 한다. JPA는 다양한 매핑 애노테이션을 지원하는데 크게 4가지로 분류할 수 있다. 객체와 테이블 매핑: @Entity, @Table 기본 키 매

2022년 6월 19일
·
0개의 댓글
post-thumbnail

마이크로 서비스 아키텍처: 구성 서버

많은 개발자들이 애플리케이션 코드에서 구성 정보를 분리한다. 이것으로 컴파일을 거치지 않고 구성은 쉽게 변경할 수 있게 되었지만 애플리케이션과 함께 관리되고 배포되어야 하는 산출물이 추가되어 복잡해진다.많은 개발자가 구성 정보를 저장하기 위해 저수준의 프로퍼티 파일(Y

2022년 6월 18일
·
0개의 댓글
post-thumbnail

마이크로 서비스 아키텍처: 개념

실제 소프트웨어 개발은 정의와 실행의 선형 과정이 아니라 개발팀이 당면한 문제를 제대로 이해하기까지 고객과 소통하고 고객에게 배우며 전달하는 활동을 반복하는 진화과정이다.전통적인 폭포수 개발 방법론을 사용하기 어려워진 것은 이들 프로젝트의 소프트웨어 산출물이 가진 세분

2022년 6월 18일
·
0개의 댓글
post-thumbnail

3. 영속성 관리

JPA 가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있다. 여기에서는 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보자.엔티티 매니저는 엔티티를 저장, 수정, 삭제, 조회하는 등의 엔티티

2022년 6월 16일
·
0개의 댓글
post-thumbnail

2. JPA 사용해보기

META-INF/persistence.xml@Entity: 해당 클래스를 테이블과 매핑한다고 JPA에게 알린다. → 엔티티 클래스@Table: 엔티티 클래스에 매핑할 테이블 정보를 알려준다. (생략시 클래스 이름 == 테이블 이름)@Id: 엔티티 클래스의 필드를 테이블

2022년 6월 15일
·
0개의 댓글
post-thumbnail

마이크로 서비스 아키텍처: 소개

마이크로서비스 개념이 발전하기 전, 대부분의 웹 기반 애플리케이션은 모놀리식 아키텍처 형태로 개발되었다. 여기에서 애플리케이션은 배포 가능한 단일 소프트웨어 산출물로 전달된다. 문제는 모놀리식 애플리케이션이 크고 복잡해지면서 애플리케이션을 담당하는 각 팀의 의사소통과

2022년 6월 15일
·
0개의 댓글
post-thumbnail

1. JPA의 개념

회원 조회용 SQL 을 작성한다.JDBC API 를 사용해서 SQL을 실행한다.조회 결과를 Member 객체로 매핑한다.여기서는 데이터를 하나 조회하고 결과를 매핑하였다. 그러나 개발이 계속되고 그에 따라 추가적으로 기능이 필요할 때마다 SQL을 작성하고 매번 그 결과

2022년 6월 14일
·
0개의 댓글
post-thumbnail

Reactor: Execution Control 3 - Broadcasting

네트워킹에서 broadcating은 다수의 receiver에게 동시에 이벤트를 발행하는 것이다. Reactive Stream 의 관점에서 이는 다수의 구독자에게 발행자가 동시에 이벤트를 발행하는 것을 의미한다. Hot Publisher가 broadcasting 이벤트를

2022년 6월 11일
·
0개의 댓글

Reactor: Execution Control 2 - Parallel Processing

Reactor 발행자와 구독자는 쓰레드를 생성하지 않는다. 그러나 이전 글에서 확인했듯이, 이러한 행동을 변경할 수 있는 연산자가 존재한다. 이전 글에서는 delay 연산자가 Reactor chain의 메인 쓰레드가 아닌 다른 곳으로 실행을 바꾸는 것을 보았다. 그러나

2022년 5월 29일
·
0개의 댓글

Reactor: Execution Control 1 - Scheduler

Reactor에 대하여 학습하면서 Filtering, Transforming, Collecting 등의 작업을 살펴보았다. 여기서 살펴본 대부분의 작업은 추가적인 쓰레드를 사용하지 않고 Main에서 동작한다. 그러나, Reactor에서는 Schedulers를 사용하여

2022년 5월 28일
·
0개의 댓글
post-thumbnail

CQRS: 명령과 조회의 분리

주문 내역 조회 기능을 구현하려면 여러 애그리거트에서 데이터를 가져와야 한다. Order에서 주문정보를 가져와야 하고, Product에서 상품 이름을 가져와야 하고, Member에서 회원 이름과 ID를 가져와야 한다.조회화면 특성 조회 속도가 빠를 수록 좋은데 여러 애

2022년 5월 22일
·
0개의 댓글

Reactor: Error 2 - Recovery

에러를 처리할때, 프로세스를 종료하지 않고 대체할 이벤트 또는 데이터를 발행하고 계속 진행하고 싶을 경우가 있을 수 있다. 여기서는 이러한 목적을 달성하는 방법을 알아보자.Reactor는 예외가 발생했을 때, onERrorReturn 연산자로 fallback 값을 반환

2022년 5월 22일
·
0개의 댓글

Reactor: Error 1 - Generating Errors

소개 탄력성은 반응형 시스템에서 매우 중요한 관점이다. 반응형 시스템은 실패하는 동안에도 응답 가능한 상태로 남아있어야 한다. 시스템은 에러를 잘 다루며, 사용자의 요청에 적시에 응답해야 한다. 이러한 요구사항은 효율적인 에러처리 메커니즘 없이는 달성하는것이 불가능하다

2022년 5월 21일
·
0개의 댓글

Reactor: BackPressure (배압)

소개 배압은 Reactor의 중요한 부분이다. 각 구독자는 구독 객체를 사용하여 처리한 이벤트를 요청한다. 발행자는 이벤트 요청의 수와 같거나 더 적은 이벤트를 발행해야한다. 이벤드 요청 수를 Lonb.MAX_VALUE로 설정하면 가지고 있는 이벤트를 전부 보낸다.

2022년 5월 15일
·
0개의 댓글
post-thumbnail

Reactor: Flow Control (흐름 조절)

Flow Control Flow Control은 생산자가 많은 이벤트를 발행하면서 구독자를 압박하지 않고 이벤트를 관리하는 것이다. 빠른 생산자는 많은 이벤트를 구독자에게 전달할 수 있다. 구독자는 이벤트를 받는 즉시 처리한다. 이러한 일련의 과정은 이벤트가 처리가능한

2022년 5월 15일
·
0개의 댓글