채용 시장이 작아지고, 경력 대비 더 많은 스킬을 요구하는 요즘, MSA, EDA와 같은 기술을 요구하는 JD를 확인해볼 수 있습니다.

이벤트 기반 아키텍처를 통해 실시간성이 중요한 환경에서 안정적이고 빠른 시스템 운영을 기대할 수 있습니다.

 

자, 그럼 왜 이벤트 기반 아키텍처를 알아야 하고 사용할 수 있어야 할까요?

일상의 예시를 통해 알아보겠습니다.

 

우리가 점심시간에 밥을 먹고 카페에 커피를 사서 사무실로 복귀하기로 했습니다.

(점심 시간: 1시간, 남은 시간: 20분)

근처에 개인 카페가 생겨 할인 행사를 진행하고 있었고, 많은 사람들이 오고가는 이곳에서 커피를 사기로 결정합니다.

주문을 하러 갔는데, 사장님이 분주하게 메뉴를 제조하고 있었습니다. -(1)

주문 제조를 마치고 사장님이 나의 주문을 여쭤 보았고, 나의 주문을 마쳤습니다. 하지만 마침 뒤에 식사를 마치고 들어온 4명의 단체 손님이 오셔서 이들의 주문까지 받고 사장님은 음료 제조를 시작했습니다. -(2)

점심 시간을 5분 남겨두고 주문한 음료를 받았습니다. 그냥 메머드를 갈 걸 하고 후회를 했습니다. -(3)

 

지금의 예시가 이벤트 기반 아키텍처가 왜 필요한지를 단 번에 알 수 있는 예시가 아닐까 생각이 듭니다.

우리가 주문을 하기 위해서는 이전 주문에 대한 음료 제조가 다 끝나야 합니다.

fun 주문() {
  val 포스기에서 주문 받기 (결제 포함)
  val 상품 제조

  return 상품 전달
}

여기서 한 가지 더 생각할 것은 1개의 요청 -> 1개의 제조 뿐만 아니라 n개의 요청 -> n개의 제조도 가능하다는 것입니다.

왜냐하면, 주문을 받고 음료를 제조하는 사람이 1명이기 때문입니다.

만약, 좀 전에 주문을 잘못 받는 문제가 발생한다면? 혼자서 이것을 다시 제조하고 다음 주문을 받으려다 이후에 손님들이 환불을 요청하는 등 더 복잡한 상황이 발생할 수도 있겠습니다. (장애 발생 및 처리에 대한 복잡성)

카페 사장님의 입장에서는 상권 분석을 했겠지만, 매출이 얼마가 발생할지도 모르는 상황에서 무작정 직원과 아르바이트를 뽑는 것은 무리라고 생각했을 수도 있습니다.

 

만약, 카페에서 이벤트 기반 아키텍처를 도입한다는 것은 무엇을 말하는 것일까요?

제 생각에는 직원, 아르바이트생을 뽑는 것입니다. 그럼, 위에서 작성한 예시 (1), (2), (3)이 아래와 같이 바뀝니다.

 

주문을 하러 갔는데, 사장님이 어떤 메뉴를 드실지 나에게 질문하고, 아르바이트생은 분주하게 메뉴를 제조하고 있습니다. -(1)

나의 주문은 완료 즉시 제조가 시작됩니다. 마침 뒤에 식사를 마치고 들어온 4명의 단체 손님이 왔습니다. 사장님은 주문을 받습니다.  -(2)

1분 후에 주문한 음료를 받았습니다. 한 입 마셔보니, 마음에 들어 다음에 또 방문해야 겠다는 생각을 가지고 사무실로 복귀합니다. -(3)

fun 주문() {
  val 포스기에서 주문 받기
  이벤트 발생 요청(상품 제조)
  
  // 이제 다음 주문을 받으면 됩니다.
}

사장님은 비용을 지불하고 아르바이트생을 뽑았습니다. (이벤트 기반 아키텍처 도입)

이 비용 지출이 당장에 사장님에게 있어 마이너스일지 모릅니다. 하지만 카페에 방문했던 손님이 만족할 가능성이 훨씬 더 크기 때문에 추후에는 더 많은 기대 수입을 가져다 줄 거라는 것을 짐작할 수 있습니다.

 

다시, IT 회사의 관점으로 돌아와서...

아르바이트생과 회사 직원의 관리 비용 차이가 정말 많이 납니다.

일반적인 IT 회사 대표의 입장에서 생각해보면, 서비스로 매출이 발생하지 않더라도 매달 발생하는 지출 비용을 생각하면 이벤트 기반 아키텍처를 도입하는 것을 망설일 수 밖에 없습니다.

 

이벤트 기반 아키텍처가 필요할 만큼의 사용자, 트래픽, 데이터가 현재 발생하고 있는지, 현재 서비스에서 매출이 발생하는지, 매출이 성장하고 있는지 등을 고려할 수 있습니다.

 

하지만 모든 것은 트레이드오프가 존재합니다. 만약 지금은 무리한 아키텍처라고 생각할 수 있지만, 정말 이제 이벤트 아키텍처를 도입할 필요가 있다고 느꼈을 때, 변경을 하려면 더 큰 비용이 발생할 수도 있기 때문입니다.

+ Recent posts