본문 바로가기
Homo Architect

스마트 디바이스/클라이언트 + notification/broadcast + Cloud

by javauser 2010. 12. 9.
점점 더 많은 기계 장치와 IT가 결합되면서 IT 기술 역시 새로운 개념과 기존 기술의 발전된 형태로 그 모습을 새로 하고 있습니다. 현재 우리에게 피부로 직접 와 닿는 것은 바로 스마트 폰이 그 대표적인 예일겁니다. 스마트 폰의 프로그래밍 기술들은 자체적인 레파지토리와 프로세스를 제어할 수 있는 기법들을 포함하며, 이는 새로운 HTML5 에서도 그대로 나타납니다. 특히, 장비에 특화된 기능들이 IT 기술과 만나면서 클라이언트 영역 내에서도 서비스를 주고 받는 또 다른 클라이언트-서버 형태의 아키텍처가 형성됩니다. 여기에 디바이스끼리의 커뮤니케이션 경로를 연결하면 그러한 형태는 더 복잡해지고, 극대화되어 또 다른 WWW 형태의 아키텍처가 만들어집니다. 결국, 기존에 우리가 프로그래밍을 해왔던 전형적인 CS 유형의 아키텍처는 노드와 노드 사이의 연결 형태이고, 그 노드는 서로가 서버이자 클라이언트가 될 수 밖에 없는 아키텍처가 만들어집니다.

이러한 현상들은 디바이스나 클라이언트가 제어하거나 풍부한 기능을 가지면 가질수록 더 심해지며, 이를 지원하는 IT 기술 역시 상당한 영역까지 클라이언트 영역으로 옮기게 만듭니다. 지금 새로 업데이트되거나 업그레이드되는 스마트폰 OS나 브라우저 기술들은 점점 더 많고 풍부한 - 이러한 개념들은 기존에 서버에서만 존재했었고, 클라이언트에서는 전혀 그러한 기술을 흉내내기 힘들었던 - API들로 채워지고 있습니다. 지금의 클라이언트들은 기존의 무식하고 답답했던 모습에서 점점 더 스마트하고 나름대로 사고를 할 수 있는 형태로 변해가고 있습니다. 이와 같은 아키텍처에서 비즈니스 로직들은 결국 클라이언트로 이전하는게 오히려 더 나을 수도 있으며, 그러한 아키텍처가 더 안정적일 수 있습니다.

클라이언트는 전체 상황을 수집하는 능력과 주시하는 능력을 가지게 되며, 이를 기반으로 자체적으로 판단과 결정을 할 수 있는 권한을 가지게 되며, 결국 기존에 서버에서만 존재하고 중요하다고 생각되던 비즈니스 로직을 가지게 됩니다. '스마트'하다는 표현은 비즈니스 로직이 존재하고, 그것도 풍부한 상태로 있다라는 것을 의미합니다.

이러한 '스마트'한 클라이언트와 서버와의 관계는 참으로 불편한 관계를 형성할 수 밖에 없습니다. 기존의 서버에서는 중앙 집중적으로 처리하려는 많은 비즈니스 로직을 통해서 클라이언트를 통제하고 좌우할 수 있었지만, 지금은 상황이 다소 바뀌게 됩니다. 즉, 서버가 가지고 있던 상당한 비즈니스 로직을 '스마트'한 클라이언트로 이전할 수 밖에 없으며, 이를 통제하기도 힘듭니다. 만일 이를 기존처럼 통제하고 중앙화시키려 한다면, 클라이언트가 가지는 복잡한 네트워크와 상황을 모두 끌어안아야 하는데 이는 더 심각한 문제를 유발시킬 수 밖에 없습니다.

'스마트'한 클라이언트를 서버 입장에서 제어할 수 있는 방법은 클라이언트가 필요한 적절한 시점에 관련 통지/결정을 하는 일입니다. 즉, 특정 클라이언트가 서버에게 요청하는 형태가 아니라, 서버가 보내주는 메시지에 귀를 귀울이고 있는 클라이언트에게 보내주는 방식이 필요합니다. 스마트 폰에서는 notification이라는 서비스를 통해서 서버로부터 다른 클라이언트로 전송되는 메시지를 받는 방식이 대표적인 그 예입니다. 전파를 수신하는 입장에서는 그 전파가 어디로부터 오는지, 어떤 경로를 통해서 전달되는지를 신경쓸 필요가 없습니다. 오직 안테나만을 세우고, 주파수를 맞추면 됩니다.

서버에서 이러한 서비스를 하려면, 기존의 클라이언트로부터의 요청을 처리하는 능력보다 이러한 메시지를 전달하려고 하는 아키텍처에 더 집중할 밖에 없습니다. 이러한 아키텍처를 가능하게 개념이 바로 Cloud 입니다. Cloud 가 단지 인프라적인 측면에서만 접근한다고 보면, 좋은 도구나 솔루션을 통해서 해결하려고 하겠지만, 궁극적으로 Cloud를 사용하고자 하는 지점과 적절한 비즈니스를 선정하는 노력이 필요합니다. 또한, Cloud 영역을 단순히 인프라의 확장과 가용성의 보장이라는 차원에서만 생각해서는 안되는 이유는 그 안에서 전달되는 메시지가 있기 때문입니다. 이 메시지는 짧은 문장과 같이 단순한 문자열도 있겠지만, 복잡한 멀티미디어나 전자 문서까지도 포함될 수 있습니다. 기존의 흑백 TV 시절에 전달되는 내용이 흑/백이라는 아주 단순한 내용이라면, 디지탈로 전달되는 내용은 원 소스인 동영상을 포함해서 이에 관련된 메타정보까지를 포함하게 됩니다. 관련된 메타정보들을 같이 보내주려면 결국은 서버 입장에서 Cloud라는 아키텍처 상에서 비즈니스 로직을 어떻게 조합하여 메시지를 만들 것인가라는 문제에 부딪히게 됩니다. 여기서 Cloud의 개념은 단지 인프라의 차원을 넘어서게 되며, 아키텍트 입장에서 바라본 Cloud는 서버(메시지 송신측)와 클라이언트(메시지 수신측) 입장에서 어떠한 경로와 방법을 사용하는지를 인식하지 못하게 사용할 수 있는 또 다른 자원의 형태로 인식하게 됩니다.

결국은 Cloud는 전혀 다른 영역들의 공간을 연결해주는 매개체이며, 이를 통해서 서로 부족하거나 아쉬운 부분들을 얻음으로써 (혹은 기존 비즈니스의 변형된 형태로) 해당 영역의 비즈니스를 완성해갑니다. 이러한 IT 기술의 변화는 기존 중앙집중 형태의 아키텍처에 새로운 가능성을 열어주게 됩니다. 즉, 기존 아키텍처가 서버 중심의 아키텍처만을 고집하고 고려했다면 이제는 '스마트'한 클라이언트의 아키텍처라는 영역을 열어주고 더욱 이에 고려할 다양한 영역을 증진시켜줍니다. 

'스마트'한 클라이언트의 출현은 아키텍처나 개발자에게는 오히려 더 많은 짐을 지게 합니다. 더 다양하고 풍부한 아키텍처들이 만들어지고 하나의 비즈니스를 완성하기 위해서 더 많은 기술들과 비즈니스의 조합을 통해서만 가능해지기 때문입니다. 점점 더 복잡도가 늘어나며, 고려할 사항들이 많아집니다. 이에 대한 준비가 필요하지만, 우리들은 결국 이전 기술로부터 이를 극복할 수 밖에는 없을 것입니다. 이러한 환경에서 비즈니스 로직의 재사용과 서비스의 확대/재생산의 개념은 가장 중요한 개념들일 것입니다. 또한, 기존의 기술이 어느 한사람의 노력으로 배포/테스트가 가능했다면, 지금은 10배가 넘는 노력을 들여도 힘듭니다. 배포/테스트 자동화에 대한 노력이 더 절실한 상태입니다.

'스마트'한 디바이스/클라이언트의 출현은 점점 더 시스템 개발을 더 어렵게 할 뿐만 아니라, 유지보수도 더 힘들게 합니다. 또한, 더 복잡한 아키텍처를 필요로 합니다. 이를 대처하는 현명한 방법은 명확한 영역 구분과 느슨한 연결고리, 효율적인 비즈니스 분산과 조합의 키워드로 해결책을 마련하는 것입니다. 복잡한 것을 먼저 해결하려는 노력보다는 단순한 것을 해결하면서 좀 더 복잡한 것들을 조합하려는 시도가 더 나은 선택일 수 있습니다. 구현하려는 비즈니스가 복잡하기 때문에 시스템을 복잡하게 구성할 필요는 없습니다. 단순하더라도 중요하고 핵심이 되는 개념을 원칙에 맞게 적용하려는 노력이 더 필요할 것 같습니다.
반응형