
Intro
최근 뉴스를 보다가, 샘 올트먼이 GPT 5 를 소개하며 했던 이야기가 인상깊어 공유하며 시작하려고 합니다.
https://news.sbs.co.kr/news/endPage.do?news_id=N1008210873
"필요할 때 바로 만들어 쓰는 소프트웨어(software on-demand) 라는 개념이 GPT-5 시대를 정의하는 특징 중 하나가 될 것이라고 생각한다."
- Sam Altman (OPEN AI CEO)
개발에 대한 장벽이 점점 더 낮아지면서,
과거에는 일정 수준 이상의 코스트가 들었던 시스템 혹은 행동들에 대한 개발이 이루어졌다면,
이제는 일상의 더욱 많은 부분에서, 더욱 많은 분야에서 쉽게 효과적인, 혹은 효율적인 툴을 개발하고 만들기 쉬워지고 있습니다.
이제는 최소한의 SW 지식과 로직만을 가지고도 MVP 수준의 복합적인 시스템을 혼자서, 쉽게 만들 수 있고
앞으로는 이러한 장벽이 더욱 빠르게 낮아질 것으로 생각됩니다.
이러한 시대적 흐름에서, 앞으로의 가장 큰 역량은 Demand를 빠르게 캐치하고 효과적인 시스템으로 만들어 낼 수 있는 역량이 아닐까 생각합니다.
개인 업무부터, 팀의 업무 혹은 외부 용역까지 사소한 문제부터 핵심 효율화를 위한 시스템 구성까지 많은 팜앤디 크루들이 함께 적극적으로 필요에 따른 시스템을 개발하고, 이를 적극 활용하여 효율화할 수 있길 기대합니다!
지난 플로그, 기획편에서는 기능에 대한 화면 명세를 작성하는 것까지 이야기 했다.
이번 실전 편에서는, 기획 이후 단계에서 어떻게 실제 시스템까지 구현하는지 큰 틀에서 단계별로 이야기 해 보려고 한다. (지난번과 마찬가지로 정답이 아닐 수 있음, 경험 공유)
1. 사용환경을 고려한 기술 스택 결정
시스템을 개발하기 위해서는 먼저 기술 스택을 결정해야 한다.
여기서 말하는 기술스택이란, 어떤 언어 / 프레임워크 / 데이터베이스 / 클라우드 서비스 등을 사용할 것인지인데, 차후 사용환경을 고려하여 오버킬 하지 않으면서도, 시스템 구현 범위가 커버 가능한 적정한 스택을 결정하는 것이 중요하다. (확장성, 유지보수 용이성, 장기적 이용 비용, 성능, 안정성, 기능성 등)
개인적으로 이번 리빙랩 도구 개발 프로젝트는
- 일단, 팜앤디 내부적으로 활용할 것이라 퍼블릭 웹 접근은 필요없다는 점,
- 대신, 내부 구성원들 (퍼실리테이터)여러명이 사용할 것이라는 점
- 다양한 참여자들의 의견을 기록하고 중간 결과물을 다양하게 정리해야 된다는 점
- 향후 리빙랩에 필요한 다양한 기능의 확장과 유지보수가 필요하다는 점
- AI API를 활용해야 하므로, 누구나 접근하여 이용하면 안된다는 점 (Key 보안, API Token Cost ...)
을 고려하여
개발자 계정으로만 접근할 수 있는 웹 프로젝트를 만들기로 하였다.
특히 초기 개발 환경의 세팅 용이성과, 유지보수성, 그리고 현재 사용하는 컴퓨터의 개발 환경을 고려하여 100% 웹으로 개발할 수 있는 codesandbox 와 firebase를 사용하였다.
* 배경지식이 없어 어떠한 기술 스택을 사용할 지 잘 모르겠으면 AI 와 어떤 환경에서 사용할 것인지를 심도있게 이야기 하여 기술 스택을 추천받는 것도 좋은 방법이다.
2. 시스템 모듈화, 기능별 Input / Output 정립
AI 를 통해 개발하다보면 하나의 소스에 모든 기능을 때려박는 경우가 많다.
작은 프로젝트에서는 괜찮을 수 있지만, 일정 규모 이상의 시스템에서는 유지보수도 복잡해지고,
AI와 소통 시 규모가 커질수록 너무 긴 소스코드를 검토하게 되어 효율성이 급감한다.
이에 따라, 각 도구별 필요한 세부 공통 기능 (ex. AI 호출, PDF 생성, 전체 시스템 스타일 등)은 각각의 역할을 하는 소스코드로 모듈화 하여 사용하고, 다른 기능들도 적정한 크기로 나누어 모듈화 한다.
하나의 도구 화면에는 각 도구에 필요한 다양한 세부 공통기능과, 각각의 세부 기능 단위로 나뉘어진 개별 기능들을 import하여 사용하게 한다.
이렇게 하면, 각 기능별 효율화 혹은 유지보수 시에도 각 기능에 해당하는 소스만 수정하면 되기도 하고, 오류를 찾고 수정하는 것, AI 와 개발하는 속도도 빨라진다.
예를 들면, 페르소나 도구에서는 야래의 세부 기능들 파일을 따로 만들고, 기능들을 역할 단위별로 불러와서 사용한다.
위 내용만 보면 어렵다고 생각할 수 있는데,
실제로는 내가 원하는 도구에 대하여 AI 에게 설명하면서 유지보수를 위하여 기능단위로 코드를 분리하고, 필요한 기능을 import하여 사용할 수 있게 구성해 달라고 하면 된다. 각 소스 코드 중 여러 기능에서 공통으로 사용되는 세부 기능들은 또 다시 components 단위로 소스코드로 구성해 달라고 요청해 달라고 해도 된다. (AI 호출, pdf 생성 등)

* 코드 최적화 관점에서 보았을 때는 너무나 손 대야 할 것이 많지만, 현재는 바이브 코딩 과정이고 MVP 수준이므로, 최소한의 개발 및 유지보수에 필요한 정도로만 모듈화 및 관리 하면 된다. 최적화는 나중에 실제 프로덕트를 만들 때 좀 더 깊이 고려해도 된다.
3. AI 와 대화하며 각 도구를 개발하고 내가 원하는 output이 나오는지 테스트 한다.
디버깅 작업 - 오류 해결 작업은 큰 이슈가 아니라, 크게 언급하지 않고 넘어가려고 한다.
콘솔에 나오는 오류 메시지를 복붙하면 한 60~70%의 오류는 해결법을 알려주는 것 같다.
AI가 제시한 해결법을 적용했음에도 안되는 나머지 오류들은 웹에서 최신 정보를 서칭하면 대부분 솔루션을 찾을 수 있는 경우가 많다.
AI 와 대화하면서 개발하는 것은 일반적인 개발과 달리 세부적인 플로우를 짜고 내가 직접 이를 개발해 가는 과정이 아니기 때문에,
개인적으로는 혼자 개발할 때 보다는 좀 더 큰 단위의 화면별 혹은 기능별로 개발하고 테스트한다.
먼저 세부적인 기능들은 (AI 연계, 실제 데이터 저장 여부) 등은 최종 단계에서 개발하고
전반적인 화면 구성이나 더미 데이터를 바탕으로 사용 시나리오를 운영하였을 때, (Input -> Output), 내가 원하는 결과가 나오는지
혹은 내가 생각한대로, 내가 생각한 수준으로 구성되는지 큰 틀에서 먼저 확인한다.
개발 단계에서 원하는 수준만 있고, 이에 대한 명확한 솔루션이 없을 수 있다.
예를들면, 5whys에서
- 이러한 도구를 처음 보는 사람들도 단계별 hierachy에 대하여 분명히 파악할 수 있고
- 한눈에 전 진행과정을 보기 편하며
- 최종적인 결론의 도달 과정에 5whys principle 에 위배가 없어야 하며, 진행자의 역량과 관계없이 AI 도움을 받아 유의미한 결론을 낼 수 있고
- 너무 AI Dependent 하지 않게, 퍼실리테이터의 개인의견을 언제든 추가할 수 있어야 한다
는 수준에 대한 최소한의 기능 요구가 있고,
이를 어떻게 화면으로 구성할지에 대한 솔루션/디자인은 없을 수 있다.
이럴경우 이런 requirements 들을 AI에게 잘 설명하고, AI가 제시한 화면 및 기능의 동작을 보면서 fine tuning을 진행해 줘야 한다.
즉, 내가 원하는 기능에 대한 요청과 수준에 대한 기준을 명확히 가지고 있어야 한다.
이렇게 하나하나의 세부 기능들을 유저 시나리오에 따라 다양하게 테스트 해 보면서, 목표 수준 이상으로 작동할 수 있도록 지속적으로 발전시켜 나간다.
테스트하면서, 다양한 유저 사용 상황에서 오류가 나지 않도록 상상 가능한 다양한 시나리오에 대한 테스트도 진행한다. (Exception handling 등)
말도 안되는 인풋을 넣어보면서 이상한 결과가 도출되지는 않는지, 오류가 발생하지는 않는지 등
(개인적으로 이번 리빙랩 도구는 팜앤디 퍼실리테이터들이 사용할 것이기 때문에, 너무 예외적인 시나리오에 대한 테스트는 진행하지 않았음)
4. 실제 사용 & 사용에 따른 개선
실제 사용하고, 사용자 의견을 수취하고, 이를 개선하여 시스템의 reliability와 output Quality, 효율성, 속도 등 다양한 측면을 개선한다.
MVP단계 혹은 개인적으로 사용하는 툴이 아니라, 프로덕트로 만들어갈 예정 /혹은 다수의 사람이 사용하는 제품이라면 굉장히 중요하다.
이러한 단계를 통하여 본 제품에서 생길 수 있는 오류나 불만, 다양한 상황에 대한 리스크를 최소화 할 수 있다.
현재 리빙랩 도구는 4단계 실제 사용 및 개선 단계를 지나고 있다.
앞으로 팜앤디 내부에서 혹은 외부에서 지속적으로 사용할 수 있는 도구화 될 수 있으면 좋겠다.
또한 이러한 도구 개발을 기반으로 앞으로 다른 용역이나, 내외부 프로젝트의 인풋 코스트를 최소화 하면서도 임팩트를 극대화 할 수 있는 다양한 도구들을 개발하고 사용할 수 있길 기대한다!
Intro
최근 뉴스를 보다가, 샘 올트먼이 GPT 5 를 소개하며 했던 이야기가 인상깊어 공유하며 시작하려고 합니다.
https://news.sbs.co.kr/news/endPage.do?news_id=N1008210873
"필요할 때 바로 만들어 쓰는 소프트웨어(software on-demand) 라는 개념이 GPT-5 시대를 정의하는 특징 중 하나가 될 것이라고 생각한다."
- Sam Altman (OPEN AI CEO)
개발에 대한 장벽이 점점 더 낮아지면서,
과거에는 일정 수준 이상의 코스트가 들었던 시스템 혹은 행동들에 대한 개발이 이루어졌다면,
이제는 일상의 더욱 많은 부분에서, 더욱 많은 분야에서 쉽게 효과적인, 혹은 효율적인 툴을 개발하고 만들기 쉬워지고 있습니다.
이제는 최소한의 SW 지식과 로직만을 가지고도 MVP 수준의 복합적인 시스템을 혼자서, 쉽게 만들 수 있고
앞으로는 이러한 장벽이 더욱 빠르게 낮아질 것으로 생각됩니다.
이러한 시대적 흐름에서, 앞으로의 가장 큰 역량은 Demand를 빠르게 캐치하고 효과적인 시스템으로 만들어 낼 수 있는 역량이 아닐까 생각합니다.
개인 업무부터, 팀의 업무 혹은 외부 용역까지 사소한 문제부터 핵심 효율화를 위한 시스템 구성까지 많은 팜앤디 크루들이 함께 적극적으로 필요에 따른 시스템을 개발하고, 이를 적극 활용하여 효율화할 수 있길 기대합니다!
지난 플로그, 기획편에서는 기능에 대한 화면 명세를 작성하는 것까지 이야기 했다.
이번 실전 편에서는, 기획 이후 단계에서 어떻게 실제 시스템까지 구현하는지 큰 틀에서 단계별로 이야기 해 보려고 한다. (지난번과 마찬가지로 정답이 아닐 수 있음, 경험 공유)
1. 사용환경을 고려한 기술 스택 결정
시스템을 개발하기 위해서는 먼저 기술 스택을 결정해야 한다.
여기서 말하는 기술스택이란, 어떤 언어 / 프레임워크 / 데이터베이스 / 클라우드 서비스 등을 사용할 것인지인데, 차후 사용환경을 고려하여 오버킬 하지 않으면서도, 시스템 구현 범위가 커버 가능한 적정한 스택을 결정하는 것이 중요하다. (확장성, 유지보수 용이성, 장기적 이용 비용, 성능, 안정성, 기능성 등)
개인적으로 이번 리빙랩 도구 개발 프로젝트는
- 일단, 팜앤디 내부적으로 활용할 것이라 퍼블릭 웹 접근은 필요없다는 점,
- 대신, 내부 구성원들 (퍼실리테이터)여러명이 사용할 것이라는 점
- 다양한 참여자들의 의견을 기록하고 중간 결과물을 다양하게 정리해야 된다는 점
- 향후 리빙랩에 필요한 다양한 기능의 확장과 유지보수가 필요하다는 점
- AI API를 활용해야 하므로, 누구나 접근하여 이용하면 안된다는 점 (Key 보안, API Token Cost ...)
을 고려하여
개발자 계정으로만 접근할 수 있는 웹 프로젝트를 만들기로 하였다.
특히 초기 개발 환경의 세팅 용이성과, 유지보수성, 그리고 현재 사용하는 컴퓨터의 개발 환경을 고려하여 100% 웹으로 개발할 수 있는 codesandbox 와 firebase를 사용하였다.
* 배경지식이 없어 어떠한 기술 스택을 사용할 지 잘 모르겠으면 AI 와 어떤 환경에서 사용할 것인지를 심도있게 이야기 하여 기술 스택을 추천받는 것도 좋은 방법이다.
2. 시스템 모듈화, 기능별 Input / Output 정립
AI 를 통해 개발하다보면 하나의 소스에 모든 기능을 때려박는 경우가 많다.
작은 프로젝트에서는 괜찮을 수 있지만, 일정 규모 이상의 시스템에서는 유지보수도 복잡해지고,
AI와 소통 시 규모가 커질수록 너무 긴 소스코드를 검토하게 되어 효율성이 급감한다.
이에 따라, 각 도구별 필요한 세부 공통 기능 (ex. AI 호출, PDF 생성, 전체 시스템 스타일 등)은 각각의 역할을 하는 소스코드로 모듈화 하여 사용하고, 다른 기능들도 적정한 크기로 나누어 모듈화 한다.
하나의 도구 화면에는 각 도구에 필요한 다양한 세부 공통기능과, 각각의 세부 기능 단위로 나뉘어진 개별 기능들을 import하여 사용하게 한다.
이렇게 하면, 각 기능별 효율화 혹은 유지보수 시에도 각 기능에 해당하는 소스만 수정하면 되기도 하고, 오류를 찾고 수정하는 것, AI 와 개발하는 속도도 빨라진다.
예를 들면, 페르소나 도구에서는 야래의 세부 기능들 파일을 따로 만들고, 기능들을 역할 단위별로 불러와서 사용한다.
위 내용만 보면 어렵다고 생각할 수 있는데,
실제로는 내가 원하는 도구에 대하여 AI 에게 설명하면서 유지보수를 위하여 기능단위로 코드를 분리하고, 필요한 기능을 import하여 사용할 수 있게 구성해 달라고 하면 된다. 각 소스 코드 중 여러 기능에서 공통으로 사용되는 세부 기능들은 또 다시 components 단위로 소스코드로 구성해 달라고 요청해 달라고 해도 된다. (AI 호출, pdf 생성 등)
* 코드 최적화 관점에서 보았을 때는 너무나 손 대야 할 것이 많지만, 현재는 바이브 코딩 과정이고 MVP 수준이므로, 최소한의 개발 및 유지보수에 필요한 정도로만 모듈화 및 관리 하면 된다. 최적화는 나중에 실제 프로덕트를 만들 때 좀 더 깊이 고려해도 된다.
3. AI 와 대화하며 각 도구를 개발하고 내가 원하는 output이 나오는지 테스트 한다.
디버깅 작업 - 오류 해결 작업은 큰 이슈가 아니라, 크게 언급하지 않고 넘어가려고 한다.
콘솔에 나오는 오류 메시지를 복붙하면 한 60~70%의 오류는 해결법을 알려주는 것 같다.
AI가 제시한 해결법을 적용했음에도 안되는 나머지 오류들은 웹에서 최신 정보를 서칭하면 대부분 솔루션을 찾을 수 있는 경우가 많다.
AI 와 대화하면서 개발하는 것은 일반적인 개발과 달리 세부적인 플로우를 짜고 내가 직접 이를 개발해 가는 과정이 아니기 때문에,
개인적으로는 혼자 개발할 때 보다는 좀 더 큰 단위의 화면별 혹은 기능별로 개발하고 테스트한다.
먼저 세부적인 기능들은 (AI 연계, 실제 데이터 저장 여부) 등은 최종 단계에서 개발하고
전반적인 화면 구성이나 더미 데이터를 바탕으로 사용 시나리오를 운영하였을 때, (Input -> Output), 내가 원하는 결과가 나오는지
혹은 내가 생각한대로, 내가 생각한 수준으로 구성되는지 큰 틀에서 먼저 확인한다.
개발 단계에서 원하는 수준만 있고, 이에 대한 명확한 솔루션이 없을 수 있다.
예를들면, 5whys에서
- 이러한 도구를 처음 보는 사람들도 단계별 hierachy에 대하여 분명히 파악할 수 있고
- 한눈에 전 진행과정을 보기 편하며
- 최종적인 결론의 도달 과정에 5whys principle 에 위배가 없어야 하며, 진행자의 역량과 관계없이 AI 도움을 받아 유의미한 결론을 낼 수 있고
- 너무 AI Dependent 하지 않게, 퍼실리테이터의 개인의견을 언제든 추가할 수 있어야 한다
는 수준에 대한 최소한의 기능 요구가 있고,
이를 어떻게 화면으로 구성할지에 대한 솔루션/디자인은 없을 수 있다.
이럴경우 이런 requirements 들을 AI에게 잘 설명하고, AI가 제시한 화면 및 기능의 동작을 보면서 fine tuning을 진행해 줘야 한다.
즉, 내가 원하는 기능에 대한 요청과 수준에 대한 기준을 명확히 가지고 있어야 한다.
이렇게 하나하나의 세부 기능들을 유저 시나리오에 따라 다양하게 테스트 해 보면서, 목표 수준 이상으로 작동할 수 있도록 지속적으로 발전시켜 나간다.
테스트하면서, 다양한 유저 사용 상황에서 오류가 나지 않도록 상상 가능한 다양한 시나리오에 대한 테스트도 진행한다. (Exception handling 등)
말도 안되는 인풋을 넣어보면서 이상한 결과가 도출되지는 않는지, 오류가 발생하지는 않는지 등
(개인적으로 이번 리빙랩 도구는 팜앤디 퍼실리테이터들이 사용할 것이기 때문에, 너무 예외적인 시나리오에 대한 테스트는 진행하지 않았음)
4. 실제 사용 & 사용에 따른 개선
실제 사용하고, 사용자 의견을 수취하고, 이를 개선하여 시스템의 reliability와 output Quality, 효율성, 속도 등 다양한 측면을 개선한다.
MVP단계 혹은 개인적으로 사용하는 툴이 아니라, 프로덕트로 만들어갈 예정 /혹은 다수의 사람이 사용하는 제품이라면 굉장히 중요하다.
이러한 단계를 통하여 본 제품에서 생길 수 있는 오류나 불만, 다양한 상황에 대한 리스크를 최소화 할 수 있다.
현재 리빙랩 도구는 4단계 실제 사용 및 개선 단계를 지나고 있다.
앞으로 팜앤디 내부에서 혹은 외부에서 지속적으로 사용할 수 있는 도구화 될 수 있으면 좋겠다.
또한 이러한 도구 개발을 기반으로 앞으로 다른 용역이나, 내외부 프로젝트의 인풋 코스트를 최소화 하면서도 임팩트를 극대화 할 수 있는 다양한 도구들을 개발하고 사용할 수 있길 기대한다!