블로그

테세우스의 역설의 적용

로리 맥비티 썸네일
로리 맥비티
2016년 5월 23일 게시
테세우스-선

적어도 과거에는 철학을 연구하는 과정에서 표면적으로 보면 아무 의미가 없어 보이는 질문을 던지는 일이 많았습니다. 결국, "모든 나무 부분을 교체하여 복구한 배"가 동일한 배로 남아 있는지 여부를 아는 것이 정말 중요한가? 플루타르코스가 테세우스의 삶 에서 묻는 질문입니다. 그 이후로 이것은 테세우스의 역설로 알려지게 되었습니다. 더 일반적으로 말하면, "모든 구성 요소가 교체된 객체가 근본적으로 동일한 객체 로 유지되는지 여부"를 묻습니다. ( 테세우스의 배, 위키피디아 )

기존의 모놀리식 애플리케이션에 적용되는 마이크로서비스에도 동일한 질문을 할 수 있습니다. 마이크로서비스는 기능을 보완적인 서비스로 대체하여 본질적으로 애플리케이션을 복구하려고 합니다. 기능은 설계상 작으므로 결과적으로 분리된 서비스에 "마이크로"라는 용어가 적용됩니다. 둘 사이의 차이점은 의사소통 측면에서 볼 수 있습니다. 모놀리식 애플리케이션에서는 함수가 메모리의 특정 주소를 참조하여 호출됩니다. 마이크로서비스 기반 애플리케이션에서 함수(서비스)는 네트워크의 특정 IP 주소를 참조하여 호출됩니다.

마이크로서비스-역설

개념적으로 둘은 동일하며, 개별 기능 구성요소를 호출하는 메커니즘만 다릅니다. 결과 다이어그램은 본질적으로 거의 차이가 없지만 모놀리스의 "상자"는 단일 서버이고 마이크로서비스의 "상자"는 전체 데이터 센터입니다. 하나는 로컬 주소 지정을 사용하고 다른 하나는 네트워크 주소 지정을 사용합니다. 이러한 각 기능에 대한 코드는 테세우스의 배에 있는 나무처럼 정확히 동일할 수 있습니다. 

하지만 비즈니스 기능은 일관성을 유지하며, 실제로 애플리케이션을 적절히 분해했다면 사용자는 두 기능 사이에 눈에 띄는 차이를 볼 수 없어야 합니다. 테세우스의 배에 탄 승객의 관점에서 보면 둘 사이에 차이가 없다고 주장할 수도 있다. 그럴 필요도 없습니다.

하지만 철학자들은 더 깊이 파고드는 경향이 있고, 철학자들처럼 우리도 그래야 합니다. 왜냐하면 모노리식 애플리케이션과 마이크로서비스 기반 애플리케이션 간의 차이는 실제로 운영에 매우 중요하기 때문입니다.

네트워크 운영의 복잡성

마이크로서비스는 애플리케이션 개발 프로세스의 많은 측면을 단순화하지만, 그렇게 하면서 운영상의 복잡성이 크게 증가합니다. 마이크로서비스 기반 애플리케이션의 서로 다른 부분 간의 네트워크 연결 수는 필연적으로 다양한 네트워크 특성을 관리하는 데 관련된 오버헤드를 필요로 합니다. IP 주소, VLAN, NAT 테이블 등. 확장성 역시 다익스트라 조차도 좌절스러워할 수 있는 과제가 됩니다 . 마이크로서비스와 부하 분산 서비스의 배치는 네트워크에서 통과해야 하는 세그먼트 수에 따라 성능에 매우 실질적인 영향을 미치기 때문입니다.

민감한 데이터 소스에 직접 액세스하는 한 서비스에 적용되는 보안 정책이 환경 설정이나 세션 상태를 관리하는 다른 서비스를 보호하는 데 필요한 보안 정책이 아니기 때문에 갑자기 추가 정책이 필요한 경우가 있습니다. 결과적으로 생성된 마이크로 보안 정책 망은 확실히 마이크로서비스 자체와 동일한 많은 이점을 제공합니다. 즉, 보다 세분화된 제어와 일종의 우아한 단순성입니다. 그러나 동시에 정책이 아키텍처의 어느 곳에 나타나든 서비스 와 함께 갑자기 이동해야 하므로 운영상의 악몽이 됩니다.

배포도 갑자기 기하급수적으로 어려워집니다. 간단한 박스 스텝 댄스에서 더 복잡한 플라멩코로 옮겨가는 것과 같으며, 스텝이 훨씬 더 많고 댄스 플로어(데이터 센터)에서 움직임이 훨씬 더 많아집니다. 일관성과 예측 가능성을 보장하고 모든 것을 적절한 시기에 제자리에 배치하려면 오케스트레이션과 자동화가 필수입니다.

애플리케이션에 대한 네트워크 및 보안 서비스를 제공하는 담당자는 5만 피트 높이의 전망이 어떻든 배가 똑같지 않다는 것을 인식해야 합니다. 간단하게 들립니다. 하나의 애플리케이션이 10개의 서비스로 대체되는 것이죠. 보세요! 테세우스의 배처럼 앱도 재창조되었습니다. 하지만 운영의 관점에서 보면 이 배는 전혀 같지 않습니다. 새로운 배의 접합부(통합)가 완전히 다르면 바다와 발생하는 마찰(네트워크)이 달라질 수 있으며, 배가 더 느리게 항해하게 될 수 있습니다.

마이크로서비스는 아직 새로운 단계입니다. 그들은 아직 세계를 정복하지는 못했지만 테세우스의 배를 무너뜨리고 다시 만드는 것만큼 간단한 문제가 아니라는 것을 인식하는 것이 중요합니다. 네트워크 및 보안 서비스 운영 팀은 네트워크와 보안에 미치는 영향이 매우 다르기 때문에 승객(사용자) 관점보다는 철학자의 관점을 취해야 합니다.