베터코드 인사이트의 시작 16편
지난 글에 이어 이번에는 Cloud Native 환경 자체에 대한 생각에서 소프트웨어 개발 조직으로 초점을 옮겨 본다. 끝까지 살아남는 소프트웨어의 조건은 무엇일까?
Cloud Native 환경에서 프로그램이 살아남는다는 말의 의미부터 분명히 하자. 일단, 비즈니스에 활용되어야 한다. 프로그램 개발과 운영에는 돈이 필요하다. 그리고, 수정 가능한 형태로 프로그램이 유지되어야 한다. 이는 개발 조직의 역량에 대한 총체적 지표가 될 수 있다. 그리고 이를 앞서 본 그림의 박스를 단위로 생각해 보면, 과연 어떤 덩어리로 구성을 해야 응집력을 구사해서 적자생존(?)할 수 있을까?
생존하는 개발 조직은 바로 그 지점을 찾아내고 실행하고 있다고 상상했다. 비즈니스의 형태는 범위 밖의 문제다. 자체 서비스일 수도 있고, SaaS 형태의 임대형 프로그래밍 제공일 수도 있다. 결국 결과를 통해서만 입증할 수 있는 미래의 문제니까 그 형태를 예측하는 일은 어리섞은 짓이다.[1]
이렇게 찾아낸 응집력의 핵심(Core)이 바로 콘텐츠가 된다. 온라인에서 소비되는 콘텐츠를 말하는 것이 아니라 소프트웨어 '내용 그 자체'를 말한다.
미래에 등장하여 클라우드 상에서 존속할 소프트웨어 모듈의 내용이 무엇이고 이름이 무엇일지는 미래의 일이다. 아직 알 수 없다. 그러나, 그 내용 자체가 핵심이 되고 사람이 생각으로 만들어낸 지식 정보가 생산의 소재가 되는 것이 소프트웨어 생산의 특징이다. 앞서 응집력을 강조했는데, 소프트웨어의 응집력은 어떻게 만들 수 있을까?
나는 집적(Integrated)이라는 표현을 소프트웨어에 적용시킨 첫 번째 날을 잊을 수 없다. 그리고 그 자극은 2018년 <축적의 시간>이란 책을 읽을 때 되살아 났다.
다양한 응용을 해당 모듈에서 소화하면 집적이라고 말할 수 있다. 주로 반도체 회로에서 쓰이는 표현이지만, 소프트웨어도 충분히 어울린다. 그렇게 축적된 힘이 바로 응집력 있게 해 준다. 응집력은 상대적인 수치다. 그 숫자가 규모의 경제에 어울리게 하는데 Cloud Native 환경이야말로 제격이다. 응집력 있는 모듈에게는 물을 만나는 격이다.
집적의 동기는 생존이라고 추상적으로 정의할 수 있다. 생존의 동기는 <Cloud Native가 만드는 규모의 경제>편에서 다룬 두 개의 축을 동력으로 발현이 가능하다. 하나는 시간 축을 따라 잦은 출시와 개선으로 기회를 확장하는 방식이다. 또 다른 방식은 Cloud Native 환경이 제공하는 넓은 무대(인프라 표준)를 타고 더 널리 진출하여 더 많은 쓰임새를 찾는 일이다.
클라우드 인프라가 제공하는 무대는 국경도 넘고, 산업을 구분하는 영역도 넘어서는 확장을 제공한다. (사람이나 조직이 아니라) 모듈 관점에서 보면 일종의 채널을 넓히는 일로 볼 수도 있다.
지금까지 쓴 내용은 응용의 집적이라는 개념이 Cloud Native 환경에서 소프트웨어 개발 조직에게 경쟁력을 만들어준다는 가정이 만들어낸 글이다. 물론, 상상에 지나지 않으니 그것이 얼마나 어려운 일이고, 어느 만큼의 노력이 드는 일인지는 알 수 없다. 아직은 말이다.
여기서 연재를 끝내자니 살펴볼 항목을 하나 더 발견했다. Cloud Native의 이점을 제대로 알려면 그 생태계가 산업 표준 형태로 번식해 나가는 점을 이해해야 할 듯하다. 앞선 글에서 언급한 대로 오라클의 문서에도 Cloud Native Computing Foundation (CNCF)가 있지만, 구글링 하다 찾은 아마존의 같은 제목의 웹 문서에도 CNCF 설명이 있다는 점은 눈에 띄는 대목이다. 다음 글에서 이를 살펴보기로 한다.
[1] 주의 사항이 하나 있다. 필자의 주요 관심사는 기업용 프로그램이란 점을 분명히 한다. 기업용 프로그램에 국한하여 상상하거나 글을 쓰지 않지만, 암묵적으로 기업용 프로그램을 전제할 수 있다는 말이다.
3. Funnel을 마케팅 말고 engagement 분석에?
5. 기술 부채는 무엇인가?
8. loosely-coupled: 빠르게 재구성하는 힘
11. 기술은 쓰임새(use case)에 따라 고르고 조합한다