저는 앱 아키텍처와 네트워크 간의 때로는 혼란스러운 관계라는 주제로 많은 글을 썼습니다. 대부분의 경우, 이러한 내용은 앱 아키텍처의 변경이 속도, 확장성, 보안을 제공하는 데 사용되는 네트워크와 앱 서비스에 어떤 영향을 미치는지 에 초점을 맞췄습니다. 하지만 오늘은 그 관계를 바꾸어 네트워크가 애플리케이션과 혁신에 얼마나 큰 영향을 미치는지 살펴보겠습니다.
저는 최근 High Scalability에 관한 게시물을 보면서 이 사실을 떠올렸습니다. 그 게시물의 저자는 네트워크가 중요한 이유 와 네트워크가 어떻게 진화했는지, 그리고 오늘날 서버리스가 등장하기까지 인터넷이 효과적으로 컴퓨터가 되는 세상을 고려할 수 있는 이유를 설명했습니다. 길지만, 읽어보면 좋은 글이니, 꼭 시간을 내어 읽어보시기 바랍니다. 여기서 요약하겠지만, 출처 기사에서 흥미롭게 읽을 만한 내용이 많이 있습니다.
다이얼업 인터넷 접속이 있던 시절, 웹사이트는 대부분 텍스트로 구성되었고, 1~2개의 (품질이 낮은) 이미지가 포함되었습니다. 대화형 기능을 원하면 Gopher나 Telnet을 실행하고, 텍스트 기반 터미널을 사용했습니다. 다이얼업을 통한 마지막 단계는 더 복잡한 것을 제공할 수 없었습니다.
다이얼업 속도가 빨라지고 결국 최초의 "광대역" 서비스로 대체되면서 앱은 더 많은 이미지를 표시하기 시작했고 여러 페이지로 나뉘기 시작했습니다. 네트워크가 충분히 빠르기 때문에 소비자가 지루해져서 디아블로를 플레이하러 달려가지 않고도 정보를 전송할 수 있었습니다. 이런 패턴은 규모가 문제가 될 때까지 계속되었습니다. 더 이상 속도가 사이트를 제한하는 것이 아니라 규모가 제한하는 것입니다. 부하 분산이 갑자기 금광이 되었습니다.
네트워크 속도는 계속 증가했습니다. 마지막 마일뿐만 아니라 데이터 센터 내부와 인터넷 백본을 따라 증가했습니다. 웹 2.0은 세상에 웹 앱이라는 개념을 소개하면서 네트워크의 기능을 활용하여 교환되는 데이터의 규모와 속도를 보장하는 반응형, 대화형 웹 사이트를 제공했습니다.
네트워크의 발전으로 인해 애플리케이션 아키텍처가 변경되었습니다. 속도와 규모가 없었다면 웹 2.0의 세상은 결코 탄생하지 않았을 것입니다. 왜냐하면 모든 소비자에게 본능적으로 존재하는 속도에 대한 요구를 충족시킬 수 없었기 때문입니다. 하지만 이러한 앱은 여전히 프레젠테이션 계층, 논리 계층, 데이터 계층으로 구성된 기존의 3계층 모델이었습니다. 그것들은 단지 인터넷을 통해 배포되었을 뿐입니다.
얼마 지나지 않아 SOA(젊은이들을 위한 서비스 지향 아키텍처 - 그런데 제 잔디밭에서 나가세요)가 유행했습니다. 표준(SOAP, XML)을 조합하여 사용하고 기존의 서비스 지향 개념을 기반으로 "웹 서비스"가 주류를 이루었습니다. 웹 서비스와 SOA는 애플리케이션을 개별 서비스로 분해하는 개념을 도입했습니다. 이것이 익숙하게 들린다면 그럴 것입니다. 오늘날 우리는 그 개념을 "마이크로서비스"라고 부르기 때문입니다.
웹 서비스의 문제점은 XML이 방대한 포맷이어서 클라이언트(또는 서버)에서 구문 분석하는 데 시간이 걸린다는 점이었습니다. XML이 SOA의 핵심이었기 때문에 각 서비스가 네트워크를 통해 정보를 교환하고 처리하는 데 X만큼의 시간이 소모되었습니다. 소비자의 요청을 처리하는 데 사용할 수 있는 시간이 제한되어 있기 때문에 애플리케이션을 합리적으로 분해할 수 있는 서비스 수가 제한될 수밖에 없었습니다. 두세 가지 서비스를 제공하는 것이 바랄 수 있는 최대치였다.
오늘날 네트워크는 처음부터 끝까지 더 빠르고 확장되었습니다. 데이터 센터(및 클라우드) 네트워크는 초당 메가비트가 아닌 초당 기가비트로 측정되며, 광대역 연결조차도 초기 기업 네트워크 속도를 부끄럽게 만들 정도입니다. 즉, 네트워크를 통한 전송 속도가 더 빨라진다는 뜻입니다. 컴퓨팅 및 I/O 속도의 엄청난 증가와 결합되어(무어의 법칙이 옳기 때문에) 애플리케이션은 예상 응답 매개변수 내에서 호출 및 실행될 수 있는 수십, 심지어 수백 개의 서비스로 분해될 수 있었습니다. 이것을 마이크로서비스라고 부릅니다.
네트워크의 이러한 변화로 인해 현대적인 애플리케이션 아키텍처와 API가 가능해졌습니다. 이는 세기 초에는 결코 불가능했을 방식으로 실시간 정보 교환을 장려했습니다. 기술이 전통적으로 지원적 역할을 했던 것보다는 이제 비즈니스 전략의 핵심 구성 요소로 간주되는 것처럼, 네트워크도 애플리케이션의 핵심 구성 요소가 되어 가고 있습니다. 다음 단계의 아키텍처(서버리스)가 쏟아져 들어오는 것을 지켜보면서, 규모와 보안 이벤트에 거의 즉각적인 대응을 제공하는 반응성이 뛰어난 통합 네트워크 및 앱 서비스 계층이 없다면 이러한 컴퓨팅 모델은 달성할 수 없다는 것을 알게 될 것입니다.
이제 네트워크 속도(우리는 빛의 속도의 한계에 도달하고 있습니다)가 중요해지기보다는 확장 및 축소와 같은 이벤트에 대응하고 , 진행 중인 공격을 막거나, 네트워크나 앱 인프라의 문제를 해결하는 네트워크 속도가 더 중요해졌습니다. 차세대 네트워킹은 소프트웨어로 정의되고, 소프트웨어로 구동되며, 소프트웨어 지원이 가능합니다. 또한 컨테이너에 호스팅된 서비스에 대한 액세스, 확장성 및 보안을 제공하는 서비스에서 거의 즉각적인 반응 속도를 요구하는 적시(just-in-time) 방식을 채택하는 확장성 모델로 이전하고 있습니다.
우리가 "네트워크"라고 부르는 것은 다양한 소프트웨어와 하드웨어에 있는 서비스로 구성 됩니다. "네트워크"가 적시 모델로 대응 하고 서비스를 제공할 수 있는 능력은 이러한 새로운 애플리케이션 아키텍처 모델의 성공을 부분적으로 결정합니다.
"네트워크"는 지금보다 더 중요했던 적은 없었습니다.