brunch

You can make anything
by writing

C.S.Lewis

by 안영회 습작 May 23. 2022

EDA 그리고 적응력을 갖춘 살아있는 시스템

MSA 기술과 적용 연구 10

이 글은 짧은 메모 둘을 인위적으로 합쳐보는 실험적인 글이다. 따라서 다소 무리가 있을 수 있다. 먼저 글을 쓰도록 유도한 자극은  Vaughn Vernon의 링크드인 최근 글이다.


EDA는 데이터 소유와 분배 책임에 대한 해결책

키야~ 멋진 정의다. 역시 대가구만! 인정!

2014년 샌프란시스코에서 열린 QCon에 참석했다. 그때 Spark 세션에서 DDD의 Aggregate Root에 대한 고민을 들으며 깜짝 놀란바 있다. 나의 영어 듣기 능력을 믿을 수 없어 (기억도 마찬가지지만) 확실하지 않지만, 그는 DDD 적용을 하다가 데이터를 분산환경에서 퍼트리는(distribution) 문제로 고생하다가 Spark를 고안한 듯했다. 무릎을 탁 쳤다. 왜 Data Streaming 솔루션이 나왔는지 단박에 이해할 수 있었기 때문이다. 코딩을 하지 않는 삶을 사는 나에게 8년이 지난 오늘 Vauhn Vernon이 그때 기억을 상기시켜준다.


데이터 수정이 잃어날 때 Aggregate Root의 문제

DDD 개념을 아는 사람 혹은 JPA를 쓰는 분들이라면 두 개의 엔티티가 밀접하게 서로 관계되어 있어서 다양한 이유로 수정이 발생하는 경험을 해본 일이 있을 것 같다. 이 경우 누가 수정의 주체가 되어야 할까? 둘 중 한 곳이면 좋겠지만, 대개는 비즈니스 규칙이나 응용 프로그램의 편의성을 위해서 그렇게 강제하기 어렵다.

그런데, 이벤트로 정의하면 어떨까? 정확히 말하면 도메인 이벤트로. 상대적으로 명료하게 수정 지점이 드러난다. 더불어 도메인 이벤트로 인해 팀의 언어가 만들어지고 소통이 정교해진다. DDD 표현으로 말하면 Ubiquitous Language 라고 할 수 있다. (최봉영선생님께 Ubiquitous Language 을 대체할 한국말을 여쭤봐야겠다!)


적응력을 갖춘 살아있는 시스템을 구축하라

자 이번에는 인위적으로 이어붙이는 또 다른 글이다. 도전적인 단락 제목은 <로봇도 사람이 필요하다, 사람이 로봇을 필요로 하는 것보다 더 많이> 의 내용 중에 등장하는 문구다. 두 사람이 AI 전문가란 점을 고려하여 기사를 읽어야 한다. 다시 말해서 저들은 세상이 빨리 바뀌었으면 하는 욕망을 모든 글에 은연중에 담고 있을 것이다. 또한, 바뀌지 않는 세상에 대해 다른 사람보다 관심이 매우 적은 이들이라고 이해해도 크게 틀리지 않을 것이다. 


아주 느슨하게 관계를 맺어 글을 빨리 끝낼 수 있다는 생각이 들었다. 도메인 이벤트 만들고 EDA 채택하면 의사소통에 좋으니 결과적으로 (개발도 잘하면) 적응력을 갖춘 살아있는 시스템을 구축할 수 있다는 식으로... 하지만 너무 비약이다.


경계가 없는 시스템

그래서 HBR 기사에서 내가 밑줄을 치고 기록까지 남길만큼 관심을 끈 아키텍처를 논하는 부분을 하나 더 인용하고 관련 생각을 남기는 데까지 나아가 보자. 해당 영역의 제목이 바로 <적응력을 갖춘 살아있는 시스템을 구축하라>이다. 그 중에 내가 밑줄 친 부분은 아래와 같다.

'무경계'란 IT스택 내, 클라우드 기반 플랫폼을 사용해 기업간의 경계를 허물어 네트워크 효과를 이용할 수 있고, 인간과 기계의 장벽을 허물어 비즈니스 운영방식을 개선할 수 있는 무한한 기회를 제공한다는 의미다. '적응가능'이란 데이터 및 지능형 기술의 발전으로 구동되는 시스템이 비즈니스와 기술 변화에 빠르게 적응해 마찰의 최소화 하고...

놀랍게도 1시간에 전에 본 페친님 글에 경계란 단어가 등장했는데 관련이 있으려나?

당연하게도 직접적 연관성은 없지만 아래 사실에 근거해서 무경계와 앞선 EDA를 설명할 수 있다.

고대 그리스의 수리철학자들은 하나는 원이라 했다. 원은 만물을 생성해내는 자궁과도 같다고 했다. 원은 360도로 분할해놓았다.

경계가 없다는 말은 하나라는 뜻이다. 그것을 고대 그리스에선 원으로 보았다는 말이다. 그렇다면 HBR 기사 저자의 주장과 고대 그리스 수리철학자들을 만나게 하면 원같은 시스템을 만들라는 주장을 만들어낼 수 있다. 그게 무엇인가? 


EDA에 대한 Vaughn Vernon의 정의를 다시 보자. 데이터 수정이 발생할 때, 그 위치가 어디든 하나의 도메인 이벤트로 던지면 원과 같은 효과를 낼 수 있다. 우리 몸에서 경계를 넘어 혹은 경계가 없는 듯 곳곳에 피가 흐르듯이 말이다. 


각(角)이 늘어서 원이 되면 진화인가?

나는 조금 생뚱맞은 질문을 던져본다. 그럴 듯하다. <실용적인 포트와 어댑터 적용> 편에서 다룬 헥사고널이 입에는 잘 붙지만 포트와 어댑터라는 말로 바뀌면서 각(角) 자체가 의미 없어졌다는 사실을 눈치챈 사람은 많지 않을 것이다.

Open API 사용이 일상이고 클라우드 위에서 분산 배포하는 형태가 노멀인 환경을 생각해보면 각(角)을 제한하는 일은 어려워질지도 모른다. 아니면 시스템이 진화하지 않거나 죽어가는 중인지도 모르고...


MSA 기술과 적용 연구 시리즈

1. MSA 기술이전 사업을 시작하다

2. 헤드리스 커머스와 SW 아키텍처 

3. 실용적인 포트와 어댑터 적용

4. 실전 마이크로서비스 아키텍처 적용

5. 느슨한 설계시점 결합이란 무슨 말인가?

6. 느슨한 설계시점 결합을 안하면 무엇이 문제인가?

7. 느슨한 설계시점 결합은 어떻게 구현하나?

8. 아키텍처 그림 가운데 있는 데이터

9. 아키텍처는 의사소통에 관한 문제다

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari