네 가지 계층(Four layers)
소프트웨어 기능이 애플리케이션으로 활용되는 방식에는 일정한 계층적 리듬이 있는 것 같습니다. 모든 새로운 기술은 일반적으로 기능, 인터페이스, 프레임워크 및 애플리케이션이라는 네 가지 계층으로 성장하는 경향이 있습니다.

이러한 프로세스를 건너뛰거나 단축할 수 있는 방법은 없는 것 같습니다. 이 네 가지 계층은 우리가 있든 없든 성장합니다. 우리 스스로 이러한 계층을 개발하거나, 우리의 도움 없이 나타나기도 합니다. 이러한 리듬과 계층 출현의 흐름을 이해하는 것은 당황하며 허우적거리는 것과 지속 가능한 성공적인 비즈니스를 성장시키는 것 사이의 차이가 될 수 있습니다. 여기에 그 흐름이 있습니다.
⚡ 기능
모든 새로운 기술적 기능은 일반적으로 그 힘이 접근 가능해지기를 기다리며 일종의 연옥에서 시간을 보냅니다. 이해의 간극을 넘어야 합니다. 즉, 그것을 만든 소수의 사람들만이 이해할 수 있는 상태에서 더 많은 사람들이 이해할 수 있는 상태로 이동해야 합니다. 많은 기술들이 발명가의 머릿속이나 연구실 복도에 갇힌 채 이 공간에 머무릅니다. 여기서 당연한 말씀을 드리고 있을지도 모릅니다. 무언가를 발명하는 과정만으로는 그것이 채택되기에 충분하지 않습니다.
이 이야기의 첫 번째 예시로 대규모 언어 모델을 사용하겠지만, 자세히 살펴보면 대부분의 기술 발전이 동일한 흐름을 따릅니다. 트랜스포머 논문과 모델 구축에 대한 일반적인 능력은 꽤 오랫동안 존재해 왔지만, 작년까지는 주로 해당 주제를 깊이 이해해야 하는 소수의 사람들에게만 국한되어 있었습니다.
🔌 인터페이스
획기적인 발전은 일반적으로 기능 위에 나타나는 새로운 계층, 즉 인터페이스 계층의 형태로 나타납니다. 이것이 일반적으로 기술 채택 성장 곡선의 시작으로 보이는 것입니다. 인터페이스 계층은 기술의 API이거나 더 많은 사람들이 기술을 사용하기 시작할 수 있도록 하는 모든 형태의 단순화된 계약일 수 있습니다.
인터페이스 계층은 기능 계층의 민주화 역할을 합니다. 이전에는 기술의 복잡한 특성, 자본 투자 비용 또는 기타 장벽으로 인해 선택된 소수에게만 접근 가능했던 것이 이제 훨씬 더 많은 그룹에게 접근 가능해집니다. 이 새로운 청중은 여전히 전 세계 인구에 비하면 극히 일부일 가능성이 높지만, 땜장이의 역동성이 나타나기에는 충분히 많아야 합니다.
이 땜장이의 역동성은 기술의 성공에 핵심입니다. 땜장이들은 해당 기술이 어떻게 작동하는지 잘 모릅니다. 그들은 깊은 지식이나 한계에 대한 인식이 없습니다. 이것은 기술 발명가에 비해 엄청난 이점을 제공합니다. 그들은 이 기술이 무엇에 관한 것인지에 대한 선입견에 갇혀 있지 않습니다. 땜장이들은 땜질합니다. 인터페이스 계층에서 작동하면서, 그들은 단지 이 방법 저 방법으로 기술을 적용해 보고 무슨 일이 일어나는지 확인합니다.
많은 연구 개발 조직에서 땜질이 소규모 전문가 그룹이 할 수 있는 것이라고 가정하는 중대한 실수를 저지릅니다. 이는 일반적으로 역효과를 낳는데, 이 프로세스의 이 단계가 성공적으로 진행되려면 두 가지 요소가 필요하기 때문입니다. 1) 기능으로 무엇을 할 수 있을지에 대한 아이디어를 가진 사람들, 그리고 2) 놀라운 새로운 가능성을 실제로 소개하기 시작할 만큼 충분한 수의 사람들입니다.
이러한 놀라움의 요소 때문에 땜질은 근본적으로 예측 불가능한 활동입니다. 이것이 R&D 팀이 이에 참여하지 않는 경향이 있는 이유입니다. 특히 기술의 사회적 영향이 불분명한 경우에는 이 단계에 많은 단점이 숨겨져 있을 수 있습니다.
대규모 언어 모델의 경우, OpenAI와 StabilityAI가 이러한 위험을 감수할 가치가 있다고 결정한 회사였습니다. OpenAI는 모델에 대한 간단한 API를 제공함으로써 LLM 기능에 대한 접근 장벽을 크게 낮췄습니다. 마찬가지로 StabilityAI는 Stable Diffusion 모델에 쉽게 접근할 수 있도록 함으로써 멀티모달 모델을 땜질하는 새로운 시대를 열었습니다. 그들은 대규모 언어 모델 인터페이스 계층을 처음으로 제공한 회사였습니다.
인터페이스 계층은 땜장이의 역동성을 촉진하기 위해 탄생했기 때문에 매우 구체적인 방식으로 독단적인 경향이 있습니다. 진입 장벽의 부담을 줄이는 데 관심이 있습니다. 다른 계층과 마찬가지로 세부 사항을 생략함으로써 그렇게 합니다. 즉, 단순화를 위해 일부 노브와 슬라이더는 더 이상 인터페이스 소비자에게 접근할 수 없게 됩니다.
인터페이스 계층의 사용이 증가하기 시작하면 이는 기본 기능 계층에 고유한 가치가 있는 것으로 보이며, 이 가치를 최대한 많이 포착하려는 욕구가 있음을 나타냅니다.
🔋 프레임워크
이 시점에서 새로운 계층이 나타나기 시작합니다. 세 번째 계층인 프레임워크는 유틸리티에 중점을 둡니다. 이 계층은 다음과 같이 묻습니다. 기본 인터페이스 계층을 보다 효과적인 방식으로 활용하고 훨씬 더 많은 청중에게 접근성을 높일 수 있는 방법은 무엇일까요?
유틸리티는 상황에 따라 다른 의미를 가질 수 있습니다. 어떤 경우에는 작동하는 것을 빠르게 생산하는 가치가 가장 중요합니다. 다른 경우에는 전반적인 성능이나 신뢰성이 가장 중요합니다. 대부분의 경우 둘 다와 다른 요소들이 혼합되어 있습니다.
그것이 무엇이든, 유틸리티를 최대화하기 위한 탐색은 인터페이스 계층을 사용하는 프레임워크, 라이브러리, 도구 및 서비스 개발로 이어집니다. 유틸리티에 대한 정의가 많고 이를 달성할 수 있는 방법이 많기 때문에 프레임워크 계층은 스택 중에서 가장 독단적인 경향이 있습니다.
제 경험상 프레임워크 계층에 도입된 의견의 다양성은 기능의 고유한 가치와 인터페이스 계층의 자체 의견이라는 두 가지 요인에 따라 달라집니다.
첫 번째 요인은 상당히 간단합니다. 기능이 더 가치 있을수록 프레임워크 계층에서 더 많은 의견이 나올 가능성이 높습니다.
두 번째 요인은 더 미묘합니다. 인터페이스 계층이 도입되면 작성자는 자신의 인터페이스를 통해 기능이 사용되는 방식에 대한 자체적인 정신 모델을 적용하여 빌드합니다. 아직 해당 계층의 실제 사용자가 없기 때문에 최선의 경우 추측의 집합일 뿐입니다. 그런 다음 땜질 프로세스를 통해 이러한 추측을 테스트합니다. 놀라운 새로운 용도가 발견되고, 인터페이스 소비자의 광범위하게 채택된 정신 모델은 일반적으로 원래의 추측과 다릅니다.
이러한 차이가 인터페이스 계층의 의견이 됩니다. 이 차이가 클수록 프레임워크 계층은 이 차이를 보상하는 데 더 많은 노력을 기울여야 하며, 따라서 훨씬 더 다양한 의견을 위한 더 많은 기회를 창출합니다.
이것이 어떻게 진행되는지에 대한 예시는 웹 프레임워크의 풍부함입니다. 웹 브라우저는 문서 보기 애플리케이션으로 시작했기 때문에 여전히 모든 초기 추측이 확고히 자리 잡고 있습니다. 실제로 웹 개발의 주요 API는 문서 객체 모델이라고 불립니다. 우리는 모두 이러한 개념에서 벗어나 브라우저에 비즈니스 수행, 즐거움 제공, 그리고 이 API의 원래 설계자가 상상했던 것보다 훨씬 더 많은 방식으로 우리와 함께 작업하도록 요청하고 있습니다. 따라서 이 정신 모델 격차를 해소하기 위한 또 다른 방법을 시도하는 새로운 웹 프레임워크가 끊임없이 쏟아져 나오고 있습니다.
프레임워크와 인터페이스 계층 간의 상호 작용 결과로 발생하는 역설을 언급하는 것도 중요합니다. 프레임워크 계층은 동시에 아래의 인터페이스 계층에 변경과 유지라는 두 가지 상충되는 압력을 가하는 것으로 보입니다.
한편으로는 인터페이스 계층 유지 관리자가 초기 추측이 테스트되었으므로 이를 변경하고 싶은 유혹이 매우 큽니다. 실제로 프레임워크 계층 개발자와 이야기할 때 인터페이스 계층 유지 관리자는 종종 변경 요청을 듣게 됩니다.
동시에 변경은 기존 계약을 깨는 것을 의미하며, 이는 프레임워크 계층에 온갖 종류의 문제를 일으킵니다. 이러한 종류의 변경은 일반적으로 많은 작업이 필요하며 오랜 시간이 걸립니다.
실행 가능한 인터페이스 계층의 일반적인 상태는 외부에서 보면 속도가 느리게 느껴지는 끊임없는 변화의 느린 행진에 빠져 있는 것입니다. 프레임워크 계층이 나타나면 API 계층은 점점 더 발전하기 어려워집니다. 현재 이 행진에 참여하고 있는 분들은 명예의 훈장으로 여기십시오. 이는 여러분이 매우 성공적인 무언가를 만들었다는 강력한 신호입니다.
프레임워크 계층은 기능 적용의 모범 사례와 패턴이 개발되고 저장되는 사실상의 장소가 됩니다. 이것이 제대로 된 프레임워크 계층이 나타난 후에야 강력한 애플리케이션이 실제로 스택 하단의 기능을 활용하기 시작하는 이유입니다.
📱 애플리케이션
애플리케이션 계층은 네 가지 계층 스택의 최상위에 있습니다. 이 계층은 기술이 마침내 사용자와 마주하는 곳입니다. 즉, 기술 기능의 소비자입니다. 이러한 소비자는 기술에 전혀 능숙하지 않은 최종 사용자일 수도 있고, 특정 기술이 내부적으로 어떻게 작동하는지 생각할 필요가 없어서 안도하는 또 다른 개발자 그룹일 수도 있습니다.
이 계층에서는 유틸리티를 극대화하려는 압력이 커집니다. 소비자 수준의 소프트웨어는 중요한 사업이며, 종종 게임에 참여하기 위해서만 사용 가능한 모든 역량이 필요합니다. 새로운 기능을 도입하는 것이 이 사업을 확장하는 매력적인 방법일 수 있지만, 이 계층에서는 가능한 한 가장 효율적인 방법을 모색합니다. 프레임워크 계층이 존재하는 이유는 바로 이러한 효율성을 확보하고 기술 가용성을 더욱 확장하기 위해서입니다.
이는 연구 조직의 또 다른 일반적인 함정을 강조합니다. 즉, 인터페이스 및 프레임워크 계층에 대한 생각 없이 새로운 기능을 애플리케이션에 바로 밀어 넣으려고 시도하는 것입니다. 이는 일반적으로 기능 계층에서 빌드하는 팀과 애플리케이션 계층에서 빌드하는 팀 간의 협업처럼 보입니다. 대개는 엉망진창입니다. 명목상으로는 협업이 성공하더라도 결국에는 참여자 모두가 만족하지 못합니다. 기능 계층의 사람들은 큰 아이디어를 가장 좁고 상상력이 부족한 방식으로 구현한 것 같다고 느낍니다. 애플리케이션 사람들은 이제 코드베이스에 이상한 일회성 똥덩어리가 생겨서 화가 납니다.
👏 모두 함께
기술을 채택하려면 네 가지 계층을 모두 육성해야 합니다. 기능을 애플리케이션에 연결하려면 먼저 상당한 양의 땜질을 거치는 인터페이스 계층이 필요하며, 새로운 기술이 실제로 해결할 수 있는 잠재적 솔루션 공간을 매핑하는 데 도움이 되는 중요하지 않은 양의 사용 사례 탐색이 필요합니다. 그런 다음 탐색된 공간에서 가장 짧은 경로를 추적하는 관행과 패턴을 캡처하고 구현하는 프레임워크 계층이 필요합니다.
이것이 바로 대규모 언어 모델에서 진행되고 있는 상황입니다. ChatGPT가 모든 관심을 받고 있지만, 실제로 흥미로운 작업은 대규모 언어 모델 인터페이스 계층 위에 있는 프레임워크 계층(OpenAI, Anthropic 및 PaLM API)에서 일어나고 있습니다.
많은 기술 혁신이 겪는 너무나 흔한 환멸의 골짜기는 기능 계층을 사용할 수 있게 된 시점과 애플리케이션 계층을 지원하기 위해 인터페이스 및 프레임워크 계층이 채워지는 시점 사이의 기간으로 설명할 수 있습니다.
예를 들어, 가장 최근의 AI 붐의 미래에 대해 더 나은 추측을 하고 싶다면 LangChain, AutoGPT 및 기타 땜질 모험과 같은 프로젝트에서 일어나는 일에 주목하십시오. 이러한 프로젝트는 프레임워크 계층의 토대를 형성할 레시피와 관행을 축적하고 있습니다. 그들은 애플리케이션 계층의 형태를 정의할 것입니다.
새로운 기술을 개발하는 모든 팀에 제공하고 싶은 조언은 다음과 같습니다.
- 기능 계층이 존재하면 즉시 인터페이스 계층 개발에 집중하십시오. 예를 들어, 장치를 무선으로 연결하는 멋진 새로운 방법이 있다면 해당 API를 제공하십시오.
- 인터페이스 계층이 땜질을 장려하는지 확인하십시오. API를 가능한 한 간단하게 만들되, 여전히 흥미로울 만큼 강력해야 합니다. 다운사이드(오용, 남용 등)를 제한하는 데 투자하십시오. 예를 들어, 초대로만 또는 속도 제한된 API로 시작하십시오.
- 팀 또는 조직 내에서 인터페이스 계층을 가지고 노는 것만으로는 땜질이 된다는 안일한 생각을 피하십시오. 다양한 땜장이 그룹을 찾으십시오. 예: 내부 전용 해커톤보다는 공개 미리보기 프로그램을 선택하십시오.
- 인터페이스 계층을 발전시키는 긴 행진을 준비하십시오. 인터페이스 계층을 영구적인 투자로 유지하는 것을 고려하십시오. 계층을 효과적으로 유지 관리하는 방법에 대한 전문 지식을 쌓으십시오.
- 인터페이스 계층 사용이 증가하기 시작하면 프레임워크 계층의 출현을 지켜보십시오. 자체 패턴과 프레임워크로 시드하십시오. 그러나 뿌리를 내리지 않을 것으로 예상하십시오. 여러분이 생각해내지 못한 다른 훌륭한 도구나 라이브러리 아이디어가 있을 것입니다. 그 모두에게 사랑을 주세요.
- 건강한 프레임워크 계층을 성장시키는 데 투자하십시오. 가능하면 프레임워크 계층 촉진자 및 후원자의 역할을 맡으십시오. 이 계층을 가꾸고 정말 흥미로운 일을 하는 사람들을 지원하십시오. 사기꾼과 적대적인 플레이어를 제거하십시오. 적어도 프레임워크 환경에 대해 매우 잘 알고 있어야 합니다. 앞서 언급했듯이 이 계층은 앞으로 나올 애플리케이션의 형태를 정의합니다.
- 기술을 활용하는 애플리케이션을 빌드하되, 프레임워크 계층에 대해 자세히 알아보기 위해서만 빌드하십시오. 이러한 통찰력을 활용하여 인터페이스 및 기능 계층의 변경 사항을 안내하십시오.
- 인내심을 가지십시오. 가치 있는 기회를 찾는 비결은 이러한 기회가 나타날 때 현존하고, 이러한 기회를 추구할 준비가 가장 잘 되어 있는 것입니다.
작업 방향을 이러한 네 가지 계층에 맞추면 패턴의 리듬이 여러분에게 불리하게 작용하는 것이 아니라 여러분에게 유리하게 작용하기 시작한다는 것을 알게 될 것입니다.
Comments ()