전체 글(126)
-
3장 : 마이크로서비스 어플리케이션 아키텍처
# DB 중심 아키텍처 문제점 DB 중심 아키텍처 : 특정 RDB에 의존한 데이터 모델링을 수행한 다음 이 물리 테이블 모델을 중심에 두고 APP을 구현하기 위한 사고를 하는 방식 - 간단한 처리 로직은 편하나, 업무가 복잡해지면 점점 복잡성을 제어할 수 없음 - DB에 의존하게 되어 스케일 아웃 성능이 떨어짐 # 레이어드 아키텍처 프레젠테이션, 비즈니스로직, 데이터 엑세스 3계층으로 구분하는 것이 일반적 ## 레이어드 아키텍처 규칙 - 상위 계층이 하위 계층을 호출하는 단방향성 유지 - 바로 밑의 근접 계층만 활용 - 상위 계층이 하위 계층에게 영향 받지 않게 구성 - 하위 계층은 자신을 사용하는 상위 계층을 알지 못하게 구성 - 계층 간의 호출은 인터페이스를 통해 호출(의존성 분리) 현대 APP은 다..
2023.05.19 -
2장 : MSA의 이해
## 리액티브 선언 응답성 : 사용자에게 신뢰성 있는 응답을 빠르고 적절하게 제공 탄력성 : 장애가 발생하거나 부분적으로 고장나더라도 시스템 전체가 고장나지 않고 빠르게 복구 유연성 : 시스템의 사용량에 변화가 있더라도 균일한 응답성을 제공, 시스템 사용량에 비례해서 자원을 늘리거나 줄이는 능력 메시지 기반 : 비동기 메시지를 전달을 통해 위치 투명성, 느슨한 결합, 논블로킹 통신을 지향 4가지 요소는 상호 보완적, 급변하는 상황에 적응할 수 있는 시스템을 요구하는 것 아키텍처 유연성 : 시스템을 구성하는 구성요소 간의 관계들이 느슨하게 맺어져 있어 언제든지 대체되거나 추가 확장될 수 있는 특성 ## 강 결합에서 느슨한 결합으로의 변화 특정 벤더 중심 아키텍처는 검증된 유명 제품군을 통해 품질이 보장되나..
2023.05.18 -
1장 : 아마존 비즈니스 민첩성의 비밀
성공한 기업들의 공통점은 이미 익숙한 비즈니스에 새로운 비즈니스 개념과 기술을 융합하여 자신만의 서비스를 제공한다는 점이다. 아마존은 11초 마다 배포함 : 비즈니스가 변경될 때 마다 시스템이 개선되고 진화됨 클라우드 인프라가 등장해서 서비스 개발에 필요한 시스템 인프라를 쉽게 마련 가능 - 사용량에 따라 비용 유연하게 조정 스케일 업 : 기존 시스템 자체의 물리적 용량을 증가 스케일 아웃 : 기존 시스템과 용량이 같은 다수 장비를 병행 추가하여 가용성을 높임 - 시스템을 작은 단위의 독립적인 서비스 연계로 구성 클라우드 프렌들리 어플리케이션 : 큰 덩어리로 클라우드 환경에 올라갈 수 있도록 하는 클라우드 친화 어플리케이션 클라우드 네이티브 어플리케이션 : 독립적으로 분리되어 배포될 수 있는 조각으로 구..
2023.05.16 -
2장 : 리액티브 스트림즈
# 리액티브 스트림즈 - 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 # 리액티브 스트림즈 컴포넌트 - Publisher : 데이터를 생성하고 통지 - Subscriber : 구독한 Publisher로부터 데이터를 전달받아 처리 - Subscription : Publisher에 요청한 데이터의 개수를 지정, 데이터의 구독을 취소 - Processor : Publisher와 Subscriber의 기능을 모두 가지고 있음 # 리액티브 스트림즈 관련 용어 - Signal : Publisher와 Subscriber간에 주고받는 상호작용 - Demand : Subscriber가 Publisher에게 요청하는 데이터 - Emit : 데이터를 내보냄 ..
2023.04.30 -
1장 : 리액티브 시스템과 리액티브 프로그래밍
# 리엑티브 어던 이벤트나 상황이 발생했을 대, 반응을 해서 그에 따라 적절하게 행동하는 것 클라이언트의 요청을 즉각적으로 응답함으로써 지연 시간을 최소화 방법/수단(MEAN) : 주요 통신 수단으로 무엇을 사용할 것인지 - 메시지 기반 통신을 통해서 느슨한 결합, 격리성, 위치 투명성 보장 형태(FORM) : 어떤 형태를 지니는 시스템인지 - 탄력성 : 시스템의 작업량이 변화하더라도 일정한 응답을 유지하는 것 - 회복성 : 시스템에 장애가 발생하더라도 응답성을 유지하는 것 값(VALUE) : 즉각적으로 응답 가능한 시스템을 구축할 수 있음 # 리엑티브 프로그래밍 특징 Non-Blocking I/O : 스레드가 차단되지 않음 선언형 프로그래밍 : 동작을 구체적으로 명시하지 않고 목표만 선언 data st..
2023.04.30 -
12장 : 직렬화
아이템 85. 자바 직렬화의 대안을 찾으라 - 아주 신중하게 제작한 바이트 스트림만 역직렬화 해야- 직렬화 위험을 회피하는 가장 좋은 방법은 아무것도 역직렬화 하지 않는 것- 새로운 시스템에서 자바 직렬화를 써야하는 경우는 전혀 없음- 신뢰할 수 없는 데이터는 절대 역직렬화 하지 않아야- 직렬화를 피할 수 없고 역직렬화한 데이터가 안전한 지 완전히 확신할 수 없다면 객체 역직렬화 필터링을 사용 아이템 86. Serializable을 구현할지는 신중히 결정하라 - Serizalizable을 구현하면 릴리스한 뒤에는 수정하기 어려움 - private 인스턴스 마저 api로 공개되는 꼴(캡슐화가 깨짐) - 버그와 보안 구명이 생길 수 있음 - 역직렬화는 숨은 생성자임 - 기본 역직렬화를 사용하면 불변식 꺠짐과..
2023.04.22