일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- redis
- 이스티오
- mysql
- MSA
- spring
- 토비의 스프링
- 보조스트림
- jvm
- gradle
- IntellJ
- Java
- GC
- 백준
- 쿠버네티스
- Collection
- JPA
- 토비의 스프링 정리
- 스트림
- Stream
- K8s
- Kotlin
- OS
- 스프링
- Real MySQL
- 자바 ORM 표준 JPA 프로그래밍
- 자바
- thread
- list
- Stack
- SpringBoot
- Today
- Total
목록전체 글 (152)
인생을 코딩하다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zGaCw/btrjJzvWBdq/XmxiOM84Kk0hHxitBmFydK/img.png)
쿠버네티스 서비스 메시 패턴의 구현체인 Istio란? 초창기 MSA 기술인 넷플릭스 OSS나 스프링 클라우드 기반의 서비스를 구축 및 운용할 때의 문제점은 API 게이트웨이, 서비스 레지스트리, 컨피그 서비스와 같이 운영 관리를 위한 여러 개의 기반 서비스를 별도로 각각 만들어야 한다는 번거러옴과 더불어 아래 그림과 같이 업무 처리 마이크로서비스에 스프링 클라우드 서비스를 사용하기 위한 라이브러리를 비즈니스 로직과 함께 탑재해야 한다는 점이였습니다. 또한 스프링 클라우드는 자바 기반이기 때문에 마이크로서비스가 자바 외의 다른 언어로 폴리글랏하게 구현된 경우에는 스프링 클라우드 서비스를 아예 사용할 수조차 없습니다. 그런데 최근에는 MSA 문제 영역 해결을 위한 기능(서비스 탐색, 서킷 브레이커, 추적, ..
마이크로서비스별로 기능을 분리하고 저장소를 격리함에 따라 이전에는 불거지지 않았던 문제가 생깁니다. 즉, 여러개의 분산된 서비스에 걸쳐 비즈니스 처리를 수행해야 하는 경우 비즈니스 정합성 및 데이터 일관성을 어떻게 보장할 것인지에 관한 문제입니다. 손쉽게 적용할 수 있는 한 가지 방법은 여러 개의 분산된 서비스를 하나의 일관된 트랜잭션으로 묶는 것 입니다. 이것을 분산 트랜잭션 처리 패턴 이라고 합니다. 분산 트랜잭션 처리 패턴 2단계 커밋 방법 2단계 커밋 방법은 분산 데이터베이스 환경에서 원자성을 보장하기 위해 트랜잭션에 포함돼 있는 노드가 커밋되거나 롤백 하는 메커니즘입니다. 그런데 이 방법은 각 서비스에 잠금이 걸력 발생하는 성능 문제 탓에 효율적인 방법이 아닙니다. 특히 각 서비스가 다른 인스턴..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxMop9/btrkaOsVdbX/sqgLq2zPeAY518R33OYMP0/img.jpg)
안녕하세요. 이전 글은 "MSA의 BFF 패턴, 외부 구성 저장소 패턴, 인증 인가 패턴이란?"라는 주제로 글을 작성하였었는데요, 이번에는 "장애 및 실패 처리를 위한 서킷 브레이커 패턴 및 모니터링과 추적 패턴"라는 주제로 글을 작성해 보았습니다. 장애 및 실패 처리를 위한 서킷 브레이커 패턴 여러 서비스로 구성된 시스템에서는 한 서비스에 장애가 발생했을 때 다른 서비스가 영향을 받을 수 있습니다. 이때 장애가 발생한 서비스를 격리해서 유연하게 처리할 수 있는 방법이 필요한데 이를 위한 한 가지 방법이 서킷브레이커 패턴입니다. 시스템 과부하나 특정 서비스에 문제가 생겼을 때 자연스럽게 다른 정상적인 서비스로 요청 흐름이 변경되게 해야합니다. 그러자면 서비스 상태를 항상 실시간으로 관리해서 시각화하고 모..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/L8Qgy/btrjdNIytM3/PftqwsiwF5IWcFqZPU1Er0/img.png)
안녕하세요. 저번 글에서는 Spring cloud 적용에 사용되는 컴포넌트 중 하나인 Eureka에 관해서 글을 작성해 보았습니다. 이번글은 BFF 패턴에 관해 글을 작성해보도록 하겠습니다. BFF (Backend for Frontend) 패턴이란? 최근에는 PC뿐만 아니라 다양한 모바일 장비를 사용하기 때문에 다양한 클라이언트를 고려해야 합니다. 이처럼 다양한 클라이언트를 위해서는 특 화된 처리를 위한 API 조합이나 처리가 필요합니다. 이를 위한 해결 방법으로 BFF(Backend for Frontend) 패턴이 존재합니다. BFF 패턴은 API 게이트웨이와 같은 진입점을 하나로 두지 않고 프론트엔드의 유형에 따라 각각 두는 패턴입니다. 프론트엔드를 위한 백엔드라는 의미로 BFF이라고 부릅니다. 각 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qrEqO/btrjb8Fxh1F/I7zfWxqx9OHHbJf5woulRk/img.png)
저번 글에서는 MSA에 관한 글을 작성했었습니다. 이번 글에서는 각기 다른 IP / Port/ instanceId를 가지고 있는 MicroService(인스턴스서버)들의 정보를 레지스트리에 등록할 수 있게 하고, MicroService의 동적인 탐색과 로드밸런싱을 할 수 있게 도와주는 Spring Cloud 적용에 사용되는 컴포넌트 중 하나인 Eureka에 관해 알아보도록 하겠습니다. Spring cloud(스프링 부트 + 넷플릭스 OSS)란 무엇일까요? 넷플릭스 OSS를 더 쉽게 쓸 수 있도록 스프링 진영의 피보탈에서는 기존의 스프링 부트 프레임워크에서 잘 돌아갈수 잇도록 넷플릭스 OSS 모듈들을 스프링 프레임워크로 감싸서 스프링 클라우드라는 명칭으로 발표했습니다. 비즈니스가 성장하면서 MicroSer..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FOhCP/btri5SQSAzh/7QfQ5L6ncRxkSPM83SPRzk/img.png)
SAML(Security Assertion Markup Language)이란 무엇일까요? 사용자 인증 및 승인 데이터를 교환하는 안전한 웹 도메인을 제공하는 XML 표준이라고 할 수 있습니다. SAML에는 두 가지 주요 보안 기능이 있습니다. 인증: 사용자가 본인인지 확인 권한 부여: 특정 시스템 또는 콘텐츠에 액세스하기 위한 앱에 사용자 권한 전달 SAML(Security Assertion Markup Language)은 어디에 쓰이는 걸까요? SAML을 사용하면 SAML 프로토콜 및 서비스를 지원하는 하나 이상의 애플리케이션에서 사용자들에게 SSO(Single Sign-On)를 제공할 수 있어, SSO를 통해 하나 이상의 애플리케이션을 대신하여 여러 보안 기능을 수행할 수 있습니다. SSO는 웹 애플..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ckCS3K/btriTv2i8qC/qtpKkz2vos9yg06jNnEglk/img.png)
JWT를 사용하여 인가/인증 처리를 할 때, 로그아웃과 관련된 이슈가 한 가지 있습니다. JWT 특성상 자체 만료시간이 기술되어 있으므로 강제 무효화가 안된다는 문제 입니다. JWT에 직접 기술된 만료시간으로 무효화가 되기 때문이죠. 이런 AccessToken을 무효화하기 위해 Oauth2.0을 사용하여 아래의 그림처럼 opaque token을 고려해볼 수 있습니다. Opaque token이란? 이름에서 알 수 있듯이 전달하는 정보 측면에서 불투명합니다. 토큰은 인증 서버에 저장된 정보를 가리키는 식별자일 뿐이며 서버 측에서 자체 검사를 통해 유효성을 검사합니다. 기존 JWT AccessToken의 자체 만료시간으로 인해 강제 무효화가 안되는 것을 Oauth2의 opaque token을 사용하여 로그아웃..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cXlOvX/btrid6w09pX/ajqhfkLieGBr6kKXToA5c0/img.png)
Apache Kafka란? Apache Kafka는 이벤트 스트리밍 플랫폼입니다. Kafka는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템입니다. 베어메탈 하드웨어, 가상 머신, 온프레미스 및 클라우드 환경의 컨테이너에 배포할 수 있습니다. 서버 : Kafka는 여러 데이터 센터 또는 클라우드 지역에 거쳐 있을 수 있는 하나 이상의 서버 클러스터로 실행됩니다. 이러한 서버 중 일부는 브로커라고 하는 스토리지 계층을 형성합니다. 다른 서버는 Kafka Connect 를 실행 하여 데이터를 이벤트 스트림으로 지속적으로 가져오고 내보내고 Kafka를 관계형 데이터베이스 및 기타 Kafka 클러스터와 같은 기존 시스템과 통합합니다. 미션 크리티컬한 사용 사례를 구현할 ..