컴퓨팅 테크에서 거듭되는 추상화, 가상화가 진행되는 이유
예전에 컨테이너(Container), 도커(Docker)에 대해 학습하면서 추상화, 가상화에 대해 정리한 내용을 공유합니다.
추상화, 가상화는 모든 지적 동물 중에서 인간이 가장 잘해나가고 있는 부분이라고 합니다.
이런 추상화, 가상화의 개념을 가장 적극적으로 사용하는 분야 중 하나가 컴퓨팅 분야일 텐데요.
왜 컴퓨팅 테크에서 거듭되는 추상화, 가상화가 진행되고 있을까요?
복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 - 위키백과 -
추상화는 복잡한 것을 우리가 이해하기 쉽도록, 연상하기 쉽도록, 공유하기 쉽도록, 개발의 목표가 되도록 도와주는 개념입니다. 개발의 입장에서 봤을 때 새로운 무언가를 개발한다는 것은 무엇을 추상화할 것인지의 문제가 됩니다. 그 무언가는 우리의 해결해야 할 문제이거나 우리가 제공하고 싶은 서비스가 될 것입니다.
컨테이너를 예로 들면 컨테이너는 표준화된 소프트웨어 유닛을 추상화합니다.
그 추상화된 개념에 들어가는 요소들은 코드, 런타임, 셋팅, 라이브러리 등이 됩니다.
도커를 예로 들면 도커는 컨테이너를 생성, 관리하는 솔루션들을 묶어서 제공하죠.
도커가 제공하는 서비스들을 보면 컨테이너의 생성과 관리를 추상화 한다고 볼 수 있을 거 같습니다.
추상화된 개념 '컨테이너'는 이제 컨테이너라는 단어만 듣고도 여러 가지가 연상되는 하나의 업계 공용어로 자리 잡게 됩니다. 추상화의 목적 중 하나죠. (개념 공유)
컴퓨팅 업계에서 추상화가 거듭되는 이유는 아래라고 생각합니다.
1. 해결해야 할 문제들을 위해
2. 더 복잡한 서비스를 위해
3. 설명 또는 마케팅의 목적을 위해(ex : cloud)
현실이 아닌 것을 실제처럼 생각하고 봄. 또는 그렇게 함.
(컴퓨팅 용어에서) 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술 -나무 위키-
왜 현실이 아닌 것을 왜 실제처럼 보려고 할까요?
가상화는 무언가 이득을 위해 실제로 보이지 않는 무언가를 추상화합니다.
각각의 작은 개념을 묶어 주기도 하고 큰 개념을 쪼개기도 합니다.
가상화는 유난히 컴퓨팅 업계에서 많이 쓰이는 용어이죠.
업계에서의 가상화 대상은 주로 Hardware(platform, resource)입니다.
컴퓨팅 업계에서 많은 가상화가 컴퓨터 리소스를 추상화 합니다.
리소스를 추상화하하는 이유는 두 가지라고 생각합니다.
1. 리소스 효용률(utilization rate)을 올리기
2. 리소스 매니징에 도움 주기
컨테이너도 마찬가지입니다.
관련해서 디커플링에 대해서도 알아두면 좋습니다.
디커플링 역시 추상화의 하나 입니다.
디커플링은 종속성을 제거하는 것을 말합니다.
이를 통해 선택과 집중을 통한 고퀄화를 목적으로 합니다.
(흔히 말하는 여러분은 게임 로직에만 집중하면 됩니다. 운영 시스템은 저희 솔루션을 사용해 주세요.)
또한 디커플링은 또 다른 새로운 영감(새로운 프레임워크, 새로운 기술 등장)을 주기도 합니다.
앞으로의 신기술도 이 2가지 개념을 벗어나지 않을 것입니다.
이 서비스(도구)는 뭘 문제로서 인식했나,
뭘 복잡함으로 인식했나,
뭘 마케팅 타겟으로 고려했나,
즉, 무엇의 관점으로 추상화했나 살펴보세요.
기술의 핵심을 파악하는데 도움이 될 것 입니다.