이벤트 기반 분산 시스템을 향한 여정

Arawn Park
Arawn ParkSoftware Engineer at 스프링러너
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
ORDER
SYSTEMUSER SERVICE
API GW
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS


MDM
SYSTEMBACK-OFFICE
SCM
SYSTEM



이벤트 기반 분산 시스템을 향한 여정
SERVICE
SERVICE
SERVICE
SERVICE
SYSTEM


✔
✔ (customizing)
✔ , 5
✔ (Amazon Web Service)
이벤트 기반 분산 시스템을 향한 여정
LOGISTICS SYSTEM
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
✔ Spring Boot (Java 1.8)
✔ AWS Elastic Beanstalk
: https://allegro.tech/2015/01/working-with-legacy-architecture.html
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
• 기능 변경 또는 추가 시 많은 비용이 필요
• 코드 변경시 다양한 부수효과(side effect) 발생
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
.
!"" build.gradle
#"" src
!"" config
!"" main
$   !"" java
$   $   #"" com
$   $      #"" woowahan
$   $      #"" scm
$   $      !"" purchase
$   $         !"" domain
$   $         !"" application
$   $         #"" infrastructure
$   $      !"" delivery
$   $      #"" adapter
$   $         !"" order
$   $         !"" masterdata
$   $         #"" logistics
$   #"" resources
#"" test
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
✔ 부족한 비즈니스 지식과 도메인 이해도를 가지고 바로 시작할 수 있다.
✔ 필요하다면 빠르게 고칠 수 있고, 모델을 성장 시킬 수 있다.
✔ 잘 구성된 모듈은 단일 JVM에서 동작하는 마이크로서비스로 볼 수도 있다.
✔
✔
✔ IDE
LOGISTICS
ADAPTER
DeliveryService
----------------------

+createInvoice(Order)
PurchaseService
----------------------

+createOrder(Order)
WarehousingManagement
-------------------------

+process(OrderComplated)
void process(OrderCompleted orderCompleted) {
PurchaseOrder order = purchaseService.createOrder(..);
logisticsOperations.register(order);
DeliveryInvoice invoice = deliveryService.createInvoice(..);
logisticsOperations.register(invoice);
}
✔
✔
✔ IDE
@Transactional
LOGISTICS
ADAPTER
DeliveryService
----------------------

+createInvoice(Order)
PurchaseService
----------------------

+createOrder(Order)
WarehousingManagement
-------------------------

+process(OrderComplated)
✔
✔
✔ IDE
LOGISTICS
ADAPTER
DeliveryService
----------------------

+createInvoice(Order)
PurchaseService
----------------------

+createOrder(Order)
WarehousingManagement
-------------------------

+process(OrderComplated)
LOGISTICS
ADAPTER
✔ 새로운 기능을 추가하기 위해 기존 코드를 수정해야 함
✔ 모듈간 상호 참조 등으로 순환 의존성이 생기는 등에 부작용
✔ 즉, 모듈간 강결합으로 단일 모듈에 경계가 무너지는 현상
DeliveryService
----------------------

+createInvoice(Order)
PurchaseService
----------------------

+createOrder(Order)
WarehousingManagement
-------------------------

+process(OrderComplated)
InventoryService
----------------------

+adjustStock(Order)
DeliveryService
PurchaseService
InventoryService
Warehousing
Management
DeliveryService
PurchaseService
InventoryService
Warehousing
Management
interface ApplicationEventPublisher {
void publishEvent(ApplicationEvent event);
void publishEvent(Object event);
}
class ApplicationComponent {
@EventListener
void handle(OrderCompleted orderCompleted) { }
}
interface ApplicationListener<E extends ApplicationEvent>
extends EventListener {
void onApplicationEvent(E event);
}
DeliveryService
PurchaseService
class InventoryService {
@EventListener
void handle(OrderCompleted orderCompleted) { }
}
class OrderEventRelayer {
@SqsListener("order-message-queue")
void relayEvent(OrderCompletedMessage message) {
applicationEventPublisher.publishEvent(
message.toOrderCompleted()
);
}
}
LOGISTICS
SYSTEM
LOGISTICS
ADAPTER
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
RPC Stub RPC Server
SHARED
LIBRARY
HTTP Client HTTP Server
- (RESOURCE) - URI
- (Verb) - HTTP Method
- (Representations)
Messaging API Messaging API
MESSAGING
SYSTEM
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
PRODUCT
SYSTEM
ORDER
SYSTEM
REMOTE
SYSTEMS
RESTFUL
API

SERVICE
ORDER
ADAPTER
EXTERNAL
ADAPTERS
MESSAGING
SYSTEM
LOGISTICS
SERVICE
DELIVERY
SERVICE
PURCHASE
SERVICE
PRODUCT
SYSTEM
ORDER
SYSTEM
REMOTE
SYSTEMS
RESTFUL
API

SERVICE
ORDER
ADAPTER
EXTERNAL
ADAPTERS
MESSAGING
SYSTEM
LOGISTICS
SERVICE
DELIVERY
SERVICE
PURCHASE
SERVICE
RESTFUL
API

SERVICE
ORDER
ADAPTER
EXTERNAL
ADAPTERS
MESSAGING
SYSTEM
LOGISTICS
SERVICE
DELIVERY
SERVICE
PURCHASE
SERVICE
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 최소 1회 이상 메시지 전달 보장, 최대 14일 유지
✔ 무제한 확장 가능, 빠른 읽기 처리량
✔ 메시지 풀링 방식, 단일 소비자(경쟁 소비자)
✔ 메시지 순서를 보장하지 않음
✔ 최대 256KB 데이터 전달
✔ AWS SDK 기반 쉬운 API 제공
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 발행/구독 모델 지원(1:1, 1:n)
✔ 무제한 확장 가능
✔ 소비자 유형별 메시지 전달 보장
✔ 메시지 전달 보장을 위해 SQS 사용 권장
✔ 그외 소비자 유형에 대해서는 보장 못함
✔ AWS SDK 기반 쉬운 API 제공
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 메시지 전달 및 순서를 보장
✔ 이벤트 스트리밍 지원(중복 이벤트 제어 필요)
✔ 샤드(Shard) 개념을 통해 무제한 확장 가능
✔ 자동화된 확장이 아닌, 수동 제어
✔ 3개 리전에 복제, 최대 7시간 동안 데이터 유지
✔ 초당 5회 읽기 제한(샤드 당)
✔ 최대 1MB 데이터 전달
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 메시지 전달 및 순서를 보장
✔ 점대점, 발행/구독 방식 메시지 기능 지원
✔ 인스턴스 기반 확장 가능
✔ 높은 가용성 및 메시지 안정성
✔ 업계 표준 API 및 프로토콜 호환
✔ AMQP, MQTT, OpenWire, STOMP 지원
✔ JMS(Java Message Service) 지원
PUBLISHER
SUBSCRIBER

#1
SNS TOPIC
SQS #1
SQS #2
SQS #3
SUBSCRIBER

#2
SUBSCRIBER

#3
SENDER RECEIVERSQS
RECEIVER
PUBLISHER
AWS
LAMBDA
SNS
HTTP
ENDPOINT
SQS
PRODUCT
SYSTEM
ORDER
SYSTEM
REMOTE
SYSTEMS
RESTFUL
API

SERVICE
ORDER
ADAPTER
EXTERNAL
ADAPTERS
SNS
LOGISTICS
SERVICE
DELIVERY
SERVICE
PURCHASE
SERVICE
SQS
SQS
ORDER
ADAPTER
EXTERNAL
ADAPTERS
SCM

SNS
SERVICE
SERVICE
SERVICE
SERVICE
ORDER

SERVICE
ORDER

SNS
SERVICE
SQS
SQS
ORDER SYSTEM SCM SYSTEM
SQS
ORDER

SYSTEM
SCM
SYSTEM
class OrderCompletedEvent {
private Order source;
private Date occurredOn;
public Order getSource() { .. }
public void setSource(Order source) { .. }
// getter, setter
}
{
"source" : {
"id" : "2018042129392759283",

"buyer": {},

"deliveryAddress": {},
"orderLines" : []
},
"occurredOn" : 1520393282506
}
- Message
- MessageChannel

- MessageConverter
- MessageHandler
@SqsListener("scm-adapter-order-event-queue")
void handle(OrderCompletedEvent event) {
//
}
MessageSendingOperations operations = new NotificationMessagingTemplate(amazonSNS);
operations.convertAndSend("order-event-stream", OrderCompletedEvent.of(order);
ORDER

SYSTEM
SCM
SYSTEM
@StreamListener(target = Sink.INPUT, condition = "payload.eventType == 'OrderCompletedEvent'")
public void handle(@Payload OrderCompletedEvent event) {
// handle event
}
@StreamListener(target=Sink.INPUT, condition="payload.eventType == 'OrderCanceledEvent'")
public void handle(@Payload OrderCanceledEvent event) {
// handle event
}
ORDER

SYSTEM
SCM
SYSTEM
ORDER

SYSTEM
SCM
SYSTEM
eventMessagePublisher.publishEvent(domainEvent);
@EventListener
void handle(DomainEvent event) { }
/
/
/
{
Spring Messaging
Woowahan Messaging AWS
Woowahan Messaging
Spring Cloud AWS
interface DomainEventPublisher {
void publishEvent(DomainEvent event);
}
interface DomainEventSubscriber {
void onEvent(DomainEvent event);
}
interface DomainEventPublisher {
void publishEvent(DomainEvent event);
}
class AmazonSNSDomainEventPublisher implements DomainEventPublisher {
private final NotificationMessagingTemplate messagingTemplate;
private final String destinationName;
@Override
public void publishEvent(DomainEvent event) {
Map<String, Object> headers = new HashMap<>(); {
headers.put(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE);
}
EventEnvelope<DomainEvent> payload = new EventEnvelope<>(event);
messagingTemplate.convertAndSend(destinationName, payload, headers);
}
}
interface DomainEventSubscriber {
void onEvent(DomainEvent event);
}
class AmazonSQSDomainEventSubscriber implements DomainEventSubscriber {
private ApplicationEventPublisher applicationEventPublisher;
private ObjectMapper objectMapper;
@SqsListener("scm-adapter-order-event-queue")
public void receive(@NotificationMessage JsonNode payload) {
EventEnvelope eventEnvelope = objectMapper.treeToValue(payload, EventEnvelope.class);
if (DomainEvent.class.isAssignableFrom(eventEnvelope.getEvent().getClass())) {
onEvent((DomainEvent) eventEnvelope.getEvent());
}
}
@Override
public void onEvent(DomainEvent event) {
applicationEventPublisher.publishEvent(event);
}
}
@EventListener
void handle(OrderCompletedEvent event) { }
class OrderCompletedEvent {
private Order source;
private Date occurredOn;
public Order getSource() { .. }
public void setSource(Order source) { .. }
// getter, setter
}
{
"source" : {
"id" : "2018042129392759283",
"orderLines" : []
},
"occurredOn" : 1520393282506
}
class OrderCompletedEvent {
private Order source;
private Date occurredOn;
public Order getSource() { .. }
public void setSource(Order source) { .. }
// getter, setter
}
{
"event" : {
"@eventType" : "woowabros.order.domain.event.OrderCompletedEvent",
"source" : {
"id" : "2018042129392759283",
"orderLines" : []
},
"occurredOn" : 1520393282506
}
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enableDefaultTyping();
OrderCompletedEvent event = OrderCompletedEvent.of(Order.createTemporaryOrder());
EventEnvelope envelope = EventEnvelope.wrap(event);
String orderCompletedEventJSON = objectMapper.writeValueAsString(envelope);
JavaType javaType = objectMapper.constructType(EventEnvelope.class);
EventEnvelope envelope = objectMapper.readValue(orderCompletedEventJSON, javaType);
OrderCompletedEvent event = (OrderCompletedEvent) envelope.getEvent();
이벤트 기반 분산 시스템을 향한 여정
✔
✔
✔ , (EIP )
✔ CQRS
✔ ,
✔
✔
✔ Event Sourcing, etc
✔
✔
✔ (SQS)
✔ Amazon Kinesis
EXTERNAL
SYSTEMS
PRODUCT
SYSTEM
ORDER
SYSTEM
EVENT
STREAM
ORDER
SYSTEMUSER SERVICE
API GW
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS


MDM
SYSTEMBACK-OFFICE
SCM
SYSTEM
ORDER
SYSTEMUSER SERVICE
API GW
PRODUCT
SYSTEM
SCM
SYSTEM
EXTERNAL
SYSTEMS


MDM
SYSTEMBACK-OFFICE
SCM
SYSTEM
이벤트 기반 분산 시스템을 향한 여정
✔ , (Implementing Domain-Driven Design)
✔ , (Domain-Driven Design Distilled)
✔ , 5.0 2/e(Spring 5.0 Microservices - Second Edition)
1 of 65

Recommended

우아한 모노리스 by
우아한 모노리스우아한 모노리스
우아한 모노리스Arawn Park
6.7K views59 slides
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개 by
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
18.8K views86 slides
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) by
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
29.3K views65 slides
[수정본] 우아한 객체지향 by
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향Young-Ho Cho
20K views173 slides
4. 대용량 아키텍쳐 설계 패턴 by
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
17.4K views70 slides
서버 성능에 대한 정의와 이해 by
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
52.5K views38 slides

More Related Content

What's hot

[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기 by
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기YongSung Yoon
12.4K views83 slides
Massive service basic by
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
11.1K views146 slides
코틀린 멀티플랫폼, 미지와의 조우 by
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우Arawn Park
994 views58 slides
Cache in API Gateway by
Cache in API GatewayCache in API Gateway
Cache in API GatewayGilWon Oh
2K views40 slides
점진적인 레거시 웹 애플리케이션 개선 과정 by
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정Arawn Park
5K views48 slides
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재 by
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
412 views23 slides

What's hot(20)

[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기 by YongSung Yoon
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
YongSung Yoon12.4K views
Massive service basic by DaeMyung Kang
Massive service basicMassive service basic
Massive service basic
DaeMyung Kang11.1K views
코틀린 멀티플랫폼, 미지와의 조우 by Arawn Park
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
Arawn Park994 views
Cache in API Gateway by GilWon Oh
Cache in API GatewayCache in API Gateway
Cache in API Gateway
GilWon Oh2K views
점진적인 레거시 웹 애플리케이션 개선 과정 by Arawn Park
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정
Arawn Park5K views
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재 by PgDay.Seoul
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul412 views
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기 by NHN FORWARD
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
NHN FORWARD829 views
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes by Jiyeon Seo
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
Jiyeon Seo1.6K views
REST APIs with Spring by Joshua Long
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
Joshua Long25.6K views
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint by NAVER D2
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
NAVER D222K views
Micro Service Architecture의 이해 by Terry Cho
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
Terry Cho21.3K views
ksqlDB로 실시간 데이터 변환 및 스트림 처리 by confluent
ksqlDB로 실시간 데이터 변환 및 스트림 처리ksqlDB로 실시간 데이터 변환 및 스트림 처리
ksqlDB로 실시간 데이터 변환 및 스트림 처리
confluent964 views
[오픈소스컨설팅] EFK Stack 소개와 설치 방법 by Open Source Consulting
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱 by PgDay.Seoul
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
PgDay.Seoul178 views
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf by ssuserf8b8bd1
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
ssuserf8b8bd12.8K views
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 by Hyojun Jeon
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon15.7K views
쿠키런 1년, 서버개발 분투기 by Brian Hong
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
Brian Hong109.6K views
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍 by Chris Ohk
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk2.2K views
Spring Cloud Workshop by YongSung Yoon
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud Workshop
YongSung Yoon2.8K views
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안 by SANG WON PARK
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK15.2K views

Similar to 이벤트 기반 분산 시스템을 향한 여정

판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중 by
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중Amazon Web Services Korea
9.9K views67 slides
From event storming to spring cloud implementation by
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementationuEngine Solutions
733 views32 slides
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트 by
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트Amazon Web Services Korea
5.3K views35 slides
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017 by
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWSKRUG - AWS한국사용자모임
4.8K views20 slides
ksqlDB로 시작하는 스트림 프로세싱 by
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱confluent
292 views46 slides
AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018 by
AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018
AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018Amazon Web Services Korea
1.4K views37 slides

Similar to 이벤트 기반 분산 시스템을 향한 여정(20)

판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중 by Amazon Web Services Korea
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
From event storming to spring cloud implementation by uEngine Solutions
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementation
uEngine Solutions733 views
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트 by Amazon Web Services Korea
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트
[Partner TechShift 2017] AWS 마켓플레이스 등록을 위한 테크니컬 체크리스트
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017 by AWSKRUG - AWS한국사용자모임
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
ksqlDB로 시작하는 스트림 프로세싱 by confluent
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱
confluent292 views
AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018 by Amazon Web Services Korea
AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018
AWS 마켓플레이스 성공 런칭을 위한 핵심 기술 (이경수, AWS 솔루션즈아키텍트) :: AWS TechShift 2018
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) by Amazon Web Services Korea
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아... by Amazon Web Services Korea
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키... by Amazon Web Services Korea
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화 by Amazon Web Services Korea
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C... by Amazon Web Services Korea
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트) by Amazon Web Services Korea
찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)찾아가는 AWS 세미나(구로,가산,판교) -  AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming by Amazon Web Services Korea
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
AWS와 함께하는 엔터프라이즈 비즈니스 어플리케이션 도입하기 :: 김양용 :: AWS Summit Seoul 2016 by Amazon Web Services Korea
AWS와 함께하는 엔터프라이즈 비즈니스 어플리케이션 도입하기 :: 김양용 :: AWS Summit Seoul 2016AWS와 함께하는 엔터프라이즈 비즈니스 어플리케이션 도입하기 :: 김양용 :: AWS Summit Seoul 2016
AWS와 함께하는 엔터프라이즈 비즈니스 어플리케이션 도입하기 :: 김양용 :: AWS Summit Seoul 2016
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On... by Amazon Web Services Korea
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트::  AWS Summit On...디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트::  AWS Summit On...
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On...
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬 by Amazon Web Services Korea
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS re:Invent 특집(2) – 서버리스(Serverless) 마이크로서비스를 위한 일곱 가지 모범 사례 (윤석찬) by Amazon Web Services Korea
AWS re:Invent 특집(2) – 서버리스(Serverless) 마이크로서비스를 위한 일곱 가지 모범 사례 (윤석찬)AWS re:Invent 특집(2) – 서버리스(Serverless) 마이크로서비스를 위한 일곱 가지 모범 사례 (윤석찬)
AWS re:Invent 특집(2) – 서버리스(Serverless) 마이크로서비스를 위한 일곱 가지 모범 사례 (윤석찬)
Aws summit 2017_이상오_fn by LEE Kevin
Aws summit 2017_이상오_fnAws summit 2017_이상오_fn
Aws summit 2017_이상오_fn
LEE Kevin1K views
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발 by 강 민우
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
강 민우3.2K views

More from Arawn Park

우린 같은 곳을 바라 보고 있나요? by
우린 같은 곳을 바라 보고 있나요?우린 같은 곳을 바라 보고 있나요?
우린 같은 곳을 바라 보고 있나요?Arawn Park
106 views32 slides
kotlinx.serialization by
kotlinx.serializationkotlinx.serialization
kotlinx.serializationArawn Park
243 views35 slides
#살아있다 #자프링외길12년차 #코프링2개월생존기 by
#살아있다 #자프링외길12년차 #코프링2개월생존기#살아있다 #자프링외길12년차 #코프링2개월생존기
#살아있다 #자프링외길12년차 #코프링2개월생존기Arawn Park
1.8K views82 slides
Introduction to Kotlin by
Introduction to KotlinIntroduction to Kotlin
Introduction to KotlinArawn Park
726 views17 slides
Reactive Web - Servlet & Async, Non-blocking I/O by
Reactive Web - Servlet & Async, Non-blocking I/OReactive Web - Servlet & Async, Non-blocking I/O
Reactive Web - Servlet & Async, Non-blocking I/OArawn Park
3.9K views140 slides
Spring framework 4.x by
Spring framework 4.xSpring framework 4.x
Spring framework 4.xArawn Park
3.3K views44 slides

More from Arawn Park(13)

우린 같은 곳을 바라 보고 있나요? by Arawn Park
우린 같은 곳을 바라 보고 있나요?우린 같은 곳을 바라 보고 있나요?
우린 같은 곳을 바라 보고 있나요?
Arawn Park106 views
kotlinx.serialization by Arawn Park
kotlinx.serializationkotlinx.serialization
kotlinx.serialization
Arawn Park243 views
#살아있다 #자프링외길12년차 #코프링2개월생존기 by Arawn Park
#살아있다 #자프링외길12년차 #코프링2개월생존기#살아있다 #자프링외길12년차 #코프링2개월생존기
#살아있다 #자프링외길12년차 #코프링2개월생존기
Arawn Park1.8K views
Introduction to Kotlin by Arawn Park
Introduction to KotlinIntroduction to Kotlin
Introduction to Kotlin
Arawn Park726 views
Reactive Web - Servlet & Async, Non-blocking I/O by Arawn Park
Reactive Web - Servlet & Async, Non-blocking I/OReactive Web - Servlet & Async, Non-blocking I/O
Reactive Web - Servlet & Async, Non-blocking I/O
Arawn Park3.9K views
Spring framework 4.x by Arawn Park
Spring framework 4.xSpring framework 4.x
Spring framework 4.x
Arawn Park3.3K views
씹고 뜯고 맛보고 즐기는 스트림 API by Arawn Park
씹고 뜯고 맛보고 즐기는 스트림 API씹고 뜯고 맛보고 즐기는 스트림 API
씹고 뜯고 맛보고 즐기는 스트림 API
Arawn Park7.1K views
Spring framework 3.2 > 4.0 — themes and trends by Arawn Park
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
Arawn Park8.1K views
overview of spring4 by Arawn Park
overview of spring4overview of spring4
overview of spring4
Arawn Park2.1K views
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 ) by Arawn Park
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
조금 더 좋은 개발자가 된다는 것( 부제: 컨퍼런스의 발표자가 된다는 것 )
Arawn Park2.4K views
Resource Handling in Spring MVC by Arawn Park
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
Arawn Park14.7K views
[Spring Camp 2013] Java Configuration 없인 못살아! by Arawn Park
[Spring Camp 2013] Java Configuration 없인 못살아![Spring Camp 2013] Java Configuration 없인 못살아!
[Spring Camp 2013] Java Configuration 없인 못살아!
Arawn Park16.7K views
Vagrant와 chef로 개발서버 구축 자동화하기 by Arawn Park
Vagrant와 chef로 개발서버 구축 자동화하기Vagrant와 chef로 개발서버 구축 자동화하기
Vagrant와 chef로 개발서버 구축 자동화하기
Arawn Park26.6K views

이벤트 기반 분산 시스템을 향한 여정