프로덕트

아직 프로덕트가 없습니다.

아티클

전체 보기
조준철

조준철

Libman으로 오픈소스 관리하기

Libman(Library Manager)은 인기 있는 라이브러리 및 프레임워크를 클라이언트 라이브러리를 관리하기 위한 CLI 도구로 dotnet 이 실행될 수 있는 Windows, macOS, Linux 를 지원합니다. 지원되는 소스 제공자는 FileSystem 과 CDN은 CDNJS, jsDelivr, unpkg 4 개를 지원합니다.

본래 ASP.NET Core 개발을 위한 도구로 Visual Studio 2022 에 GUI 도구로 포함되어 있던 것을 CLI 버전으로도 제공하게 되어 사실상 개발 기술에 상관없이 본인의 환경에 유용하게 사용 할 수 있습니다.

이것은 특히 웹 개발에서 유용한데, 선택한 라이브러리 파일은 설정에 의해 적절한 위치에 배치됩니다.

이 가이드는 개발자들이 Libman을 사용하여 오픈소스 라이브러리를 효율적으로 관리하는 방법을 소개합니다.

공식문서 - ASP.NET Core에서 LibMan CLI 사용

Libman 설치하기

먼저, Libman을 설치해야 합니다. Visual Studio를 사용 중이라면, Libman은 기본적으로 포함되어 있습니다. Visual Studio Code를 사용 중이라면, 다음 명령어를 통해 Libman CLI를 설치할 수 있습니다.

dotnet tool install -g Microsoft.Web.LibraryManager.Cli

Libman 초기화

프로젝트 디렉토리에서 Libman을 초기화합니다. 이 명령어는 libman.json 파일을 생성하여 라이브러리 관리를 시작할 수 있게 합니다.

libman init

라이브러리 추가하기

Libman을 사용하여 필요한 오픈소스 라이브러리를 추가할 수 있습니다. 예를 들어, jQuery를 추가하려면 다음 명령어를 사용합니다.

libman install jquery --provider cdnjs

이 명령어는 cdnjs 제공자를 통해 jQuery를 다운로드하고, libman.json 파일에 해당 라이브러리를 기록합니다.

라이브러리 업데이트 및 제거

라이브러리를 업데이트하거나 제거하는 것도 간단합니다. 업데이트하려면 다음 명령어를 사용합니다.

libman update jquery

제거하려면 다음 명령어를 사용합니다.

libman uninstall jquery

libman.json 파일 이해하기

libman.json 파일은 프로젝트에서 사용하는 모든 라이브러리를 정의합니다. 예시 파일은 다음과 같습니다.

files 항목을 설정하지 않으면 소스의 모든 파일을 대상 경로로 배치합니다.

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "jquery@3.5.1",
      "destination": "wwwroot/lib/jquery"
    },
    {
      "provider": "unpkg",
      "library": "bootstrap@4.1.3",
      "destination": "wwwroot/lib/bootstrap/"
    },
    {
      "provider": "filesystem",
      "library": "C:/temp/lodash/",
      "files": [
        "lodash.js",
        "lodash.min.js"
      ],
      "destination": "wwwroot/lib/lodash/"
    }
  ]
}

이 파일을 통해 라이브러리의 버전, 제공자, 설치 경로 등을 관리할 수 있습니다.

Libman의 장점

  • 간편한 설치 및 관리: 명령어 몇 개로 라이브러리를 쉽게 설치하고 관리할 수 있습니다.

  • 다양한 제공자 지원: cdnjs, unpkg, filesystem 등 다양한 제공자를 지원하여 유연하게 사용할 수 있습니다.

  • 프로젝트 일관성 유지: libman.json 파일을 통해 프로젝트의 모든 라이브러리를 일관되게 관리할 수 있습니다.

실습 예제

다음은 Libman을 사용하여 Bootstrap과 Popper.js를 설치하는 예제입니다.

libman install bootstrap --provider cdnjs
libman install popper.js --provider cdnjs

이 명령어를 실행하면 wwwroot/lib 디렉토리에 Bootstrap과 Popper.js가 설치됩니다.

저의 경우도 화면 개발에 필요한 클라이언트 라이브러리에 대한 버전 관리를 다음과 같이 관리하고 있습니다.

https://github.com/handstack77/handstack/blob/master/2.Modules/wwwroot/libman.json

Libman은 개발자들이 오픈소스 라이브러리를 효율적으로 관리할 수 있도록 도와주는 강력한 도구입니다. 잠깐 시간을 투자해서 Libman의 기본 사용법을 익히고, 프로젝트에 적용해 보세요.

1
0
조준철

조준철

handstack.kr 커미터에 참여하세요

이건 제 실수입니다.​

HandStack 오픈소스를 시작할 때, 기술 문서에 대한 https://handstack.kr 웹 사이트를 메타가 만든 Docusaurus 정적 페이지 문서화 도구를 이용하여 GitHub에 같이 오픈하며 지속적으로 글을 작성하고 있었는데, 이 부분이 언급되거나 홍보를 하지 않아 모르시는 분들이 많으시네요.

요약하면 https://handstack.kr 웹 사이트도 GitHub에 올라온 https://github.com/handstack77/handstack-docs 오픈소스입니다. 이 웹 사이트의 모든 컨텐츠는 GitHub에서 관리되며, 누구나 복제 및 출처를 표시하면 사용할 수 있습니다.

또한 웹 사이트에 컨텐츠를 등록하기 위한 커미터로 GitHub에 요청하여 참여하실 수 있습니다.

오픈소스 문서화 프로젝트에 기여하세요.​

HandStack 프로젝트는 개발자와 엔지니어를 위한 앱 개발 환경을 만들어 고객의 IT 과제를 해결하는 도구를 만듭니다. 프로젝트의 문서화 웹 사이트도 오픈소스로 제공되고 있으며, 이를 통해 더 많은 사람들이 프로젝트를 쉽게 이해하고 활용할 수 있도록 돕고자 합니다.

https://handstack.kr 웹 사이트는 정보를 오픈소스로 제공하는 데 목적이 있습니다. 그래서 HandStack을 기반으로 하는 다음과 같은 주제에 대한 글을 작성하고 싶으신 분들은 커미터 요청을 하시거나 handstack77@gmail.com로 요청을 주시면 됩니다. 각 주제에 대한 설명은 다음과 같습니다.

  • 시작하기: HandStack을 처음 사용하는 분들을 위한 기본 가이드입니다. 설치 방법, 초기 설정, 기본 사용법 등을 다룹니다.

  • 참고하기: HandStack을 활용하는 데 도움이 되는 다양한 참고 자료와 예제를 제공합니다. 코드 샘플, 문서 링크, 유용한 팁 등을 포함합니다.

  • 추가정보: HandStack의 고급 기능이나 추가적인 설정 방법에 대한 정보를 제공합니다. 더 깊이 있는 사용법을 배우고 싶은 분들을 위한 내용입니다.

  • 12-Factors: 12-Factor App 방법론을 HandStack에 적용하는 방법을 설명합니다. 이 방법론은 현대적인 애플리케이션 개발의 모범 사례를 제시합니다.

  • 블로그: HandStack과 관련된 다양한 주제에 대한 블로그 글을 작성합니다. 최신 업데이트, 개발자 인터뷰, 사용 후기 등을 포함합니다.

블로그의 경우 체계적으로 분류하고 독자들이 원하는 주제를 쉽게 찾을 수 있도록 태그를 제시합니다. 블로그 커미터 요청을 하시면 컨텐츠에 태그를 다음 중 하나 이상 (tags: [계획, 챌린지]) 입력해주세요.

  • 아이디어: 새로운 프로젝트나 기능에 대한 창의적인 아이디어를 공유합니다.

  • 인사이트: 특정 주제나 기술에 대한 깊이 있는 통찰과 분석을 제공합니다.

  • MVP: 최소 기능 제품(MVP) 개발 과정과 결과를 소개합니다.

  • 성과: 프로젝트나 작업에서 달성한 주요 성과와 성공 사례를 공유합니다.

  • 업데이트: 프로젝트나 제품의 최신 업데이트와 변경 사항을 알립니다.

  • 런칭: 새로운 제품이나 기능의 출시 소식을 전합니다.

  • 배운점: 프로젝트나 작업을 통해 얻은 교훈과 배운 점을 나눕니다.

  • 고민: 현재 직면한 문제나 고민에 대해 이야기합니다.

  • 푸념: 작업 중 겪은 어려움이나 불만을 솔직하게 털어놓습니다.

  • 회고: 프로젝트나 작업을 마친 후의 회고와 반성을 기록합니다.

  • 생각정리: 복잡한 생각이나 아이디어를 정리하여 공유합니다.

  • 의사결정: 중요한 의사결정 과정과 그 이유를 설명합니다.

  • 질문: 독자들에게 묻고 싶은 질문이나 의견을 구합니다.

  • 계획: 앞으로의 계획과 목표를 공유합니다.

  • 챌린지: 도전 과제와 그 해결 과정을 기록합니다.

  • 자기소개: 블로그 작성자에 대한 소개와 개인적인 이야기를 전합니다.

오픈소스 프로젝트에 참여함으로써 얻을 수 있는 보상

​

  • 개인 브랜드 강화: 오픈소스 기여를 통해 자신의 이름을 알리고, 개인 브랜드를 강화할 수 있습니다.

  • 포트폴리오 강화: 오픈소스 프로젝트에 기여한 기록은 본인의 자산이며, 포트폴리오에 추가할 수 있고, 이는 취업이나 프리랜서 활동에 큰 도움이 됩니다.

  • 경험과 기술 향상: 실제 프로젝트에 얻은 실무 경험을 쌓고, 새로운 기술을 배우며 자신의 역량을 공유할 수 있습니다.

  • 네트워킹 기회: 다양한 개발자들과 협업하면서 네트워크를 확장하고, 업계 전문가들과의 인맥을 쌓을 수 있습니다.

  • 인정과 감사: 프로젝트의 공식 문서나 웹사이트에 기여자로 이름을 올리거나, 기여자 페이지에 소개됩니다.

  • 학습 기회: 저와 직접 피드백을 주고 받으면서 프로젝트를 진행하면서 발생하는 이슈나 장애에 대한 지원 및 학습할 수 있는 기회를 제공합니다.

어떻게 기여할 수 있나요?

​

  • 문서 개선: 기존 문서를 읽고, 오타나 잘못되거나 오래된 정보를 수정해 주세요.

  • 새로운 가이드 작성: 프로젝트 사용법, 설치 방법, 팁 등을 포함한 새로운 가이드를 작성해 주세요.

  • 번역: 문서를 다양한 언어로 번역하여 더 많은 사람들이 접근할 수 있도록 도와주세요.

  • 피드백 제공: 문서를 읽고 이해하는 데 어려움이 있었다면, 피드백을 제공해 주세요.

참여 방법​

  • GitHub 저장소를 포크하고, 변경 사항을 커밋합니다.

  • Pull Request를 생성하여 변경 사항을 제출합니다.

  • 리뷰어가 변경 사항을 검토하고, 필요한 경우 피드백을 제공합니다.

작은 기여가 큰 변화를 만듭니다. 함께 더 나은 오픈소스 프로젝트를 만들어 나가요.

1
0
조준철

조준철

성당과 시장 리뷰

모든 사람들이 개발자일 필요는 없지만, 코드를 들여다 볼 줄 알면 적어도 손해 볼 일은 없기 때문에 전공이 아니더라도 소프트웨어 개발 학습을 권장 한다. 코드는 컴퓨터와 소통을 하기 위한 언어이자, 말이 통하지 않는 사람들과 소통할 수 있는 유일한 도구이기 때문이다.

에릭 레이먼드의 성당과 시장은 사회초년생이었던 나에게 많은 영향을 주었다.

어느 정도였냐면 인터넷 기반 기업들의 주가가 급격히 상승하면서 거품이 형성되었던 닷컴 버블 시기에 국내 기업들도 미래 먹거리를 위한 비전과 그에 따른 R&D 보다 단지 눈먼 돈을 벌기 위해 너도 나도 무리한 일정과 기능 검토 없이 프로젝트 수주와 기업 투자를 위한 임직원들의 월화수목금금금이 일상 이었던 2000년 당시 SI 신입 시절 한창 바빴을 시기였다.

연예나 취미도 모르는 집과 회사 밖에 몰랐던 내가 리차드 스톨만이 국내에 방한하여 연세대학교에서 강연한다는 소식에 지금은 아니겠지만 당시에는 업무 시간에 세미나 가는 것이 일반적인건 아니어서 월차내고 무슨 예긴지도 모를 GNU 에 대한 강연을 들으러 찾아 갈 정도 였다.

우리가 알고 있는 모든 직업에는 나름의 역사가 있고, 대부분의 경우 직업군에 필요한 기초, 심화 이론을 정립해둔 공학적 접근방식의 선구자들이 있다. 개인적으로 소프트웨어 공학에서 기억이 남는 선구자는 3명인데 놀랍게도 모두 2025년에도 현역으로 활동중이다.

만약 소프트웨어 개발을 하는 분들중에 다음의 3명의 이름을 처음들어 봤다면, AI와 구글 검색으로 재미있는 일화들을 찾아 볼 수 있을 것이다.

  • Linux 운영체제의 커널과 Git 개발자 "리누스 토발즈"

  • Windows 11 운영체제의 핵심인 NT 커널 개발자 "데이비드 커틀러"

  • GitHub 의 오픈소스 윤리를 공유하는 "리차드 스톨만"

최근 100년 사이에 인류의 문명 발전은 인간에게 적응할 시간도 없이 너무 빠르게 발전하고 있다는 것을 보여주는게 아닐까 싶기도 하고, 앞으로의 세대들이 받아들일 지식의 양이 어마어마 하다는 것은 웬지 안타깝기 까지하다.

이 글은 내가 왜 개발이 재미있고, 오픈소스로 HandStack 을 만들고 공유하고 있는지, 오래전 읽었던 성당과 시장을 글을 다시 읽어보며 아직 읽어 보지 않았던 소프트웨어 개발자 분들에게 공유하고픈 내용과 나름의 첨삭을 해본 잠시 읽어볼 만한 추천글이다.

해커 문화의 짧은 역사

1960년대와 1970년대의 해커 문화를 형성한 프로그래머들은 MIT 인공지능 연구소와 같은 곳에서 활동하며, 유닉스와 같은 초기 운영체제를 개발하고, 아르파넷(인터넷의 전신)을 구축하는 데 기여한 인물들이다.

이 시기의 프로그래머들은 오늘날의 오픈소스 운동의 기초를 다졌다고 할 수 있다. 즉, 해커는 컴퓨터가 대중화되지 않고, 먹고 사는 게 힘들었던 시대에 컴퓨터 시스템을 능숙하게 다루고, 시스템을 개선하거나 혁신하며 얻은 지식들을 별다른 대가 없이 공유하는 소수의 엘리트 그룹을 일컫는 단어이다.

본래 "해킹" 이라는 의미가 해커의 일상적인 문제를 푸는 개인적인 해결책을 찾는 것에서 부터 시작되어, 그 문제가 많은 해커들에게 공감받고 해결책이 널리 퍼지게 되는 것을 미덕으로 생각하는 것으로 받아들여졌던 당시에는 얼마나 아름다운 활동이었는지 생각하게 된다.

해커 문화는 순수한 형태에서 시작되어 많은 프로그래머들에게 영향을 주었으나, 1980년대부터 소프트웨어 산업이 상업화되면서 많은 소프트웨어가 독점적으로 개발되고 배포되었고, 이는 공공의 이익을 위한 해커들이 자유롭게 소프트웨어를 수정하고 공유하는 문화를 약화시켰다.

그래서 몇몇 해커들이 값 비싼 소프트웨어의 정품 라이선스 기능을 무력화하여 재배포하거나 기업의 시스템에 침투하여 데이터를 훔치는 사건이 증가하면서, 정부와 기업들은 보안 강화를 위해 다양한 법적 규제를 만들고 해커 활동을 제한하며 일부를 범죄로 간주하게 만들었다.

그렇게 대중들에게 점차 해커 문화의 순수성이 약화되고, 다양한 목적과 동기를 가진 사람들이 해커 활동에 참여하게 되면서, 인터넷의 보편화와 기술의 복잡성으로 인해 해커 문화는 더 이상 초기의 형태에서 벗어나 다양한 방향으로 변화하게 되었다.

마지막 해커 "리처드 스톨만"

1980년대에 소프트웨어 산업이 상업화되면서 해커 문화가 점차 사라지기 시작했을 때, MIT 인공지능 연구소에서 활동하며 현재 까지도 자유 소프트웨어 운동을 주도하는 인물인 리처드 스톨먼의 해커 정신은 다음과 같이 요약된다. 이로 인해 그는 종종 "마지막 해커"라고 불린다. (성당과 시장의 저자 에릭 레이먼드는 이 표현을 좋아하지 않는듯하다.)

  • 자유 소프트웨어: 소프트웨어가 사용자에게 자유롭게 사용, 수정, 배포될 수 있어야 한다고 주장한다. 이를 위해 그는 GNU 프로젝트와 자유 소프트웨어 재단(FSF)을 설립하고, GNU 일반 공중 사용 허가서(GPL)를 작성했다.

  • 공유와 협력: 소프트웨어 개발자들이 서로의 코드를 공유하고 협력하는 문화를 중요하게 생각한다. 그는 소프트웨어가 독점적으로 사용되는 것을 반대하며, 모든 사람이 소프트웨어의 혜택을 누릴 수 있어야 한다고 믿는다.

  • 해커 윤리: 해커들이 기술적 도전을 즐기고, 창의성을 발휘하며, 시스템을 개선하는 것을 중요하게 여긴다. 그는 해커들이 단순히 시스템을 침해하는 것이 아니라, 시스템을 더 나은 방향으로 발전시키는 역할을 해야 한다고 생각한다.

이러한 해커 정신은 오늘날 오픈 소스 소프트웨어 운동의 기초가 되었으며, 많은 개발자들에게 영감을 주고 있고, 다양한 프로젝트의 기본 사상으로 자리 잡고 있다.

리처드 스톨먼은 2006년 11월에 한국을 방문하여 연세대학교에서 GNU 프로젝트와 자유 소프트웨어, 그리고 GPLv3에 대한 최신 동향을 주제로 강연을 진행했다. 당시 한국 사회에서 강연을 하는 것은 정장이나 격식을 중요하게 생각했었지만, 그는 청바지를 입고 강연을 했다. 그의 편안한 복장과 말투는 자유 소프트웨어 운동의 정신을 잘 반영하는 모습이었다.

그때 강연에 통역도 없고 영어도 몰라서 리차드 스톨만의 강연이 무슨 내용인지 잘은 모르지만 옆에 앉아 있던 외국 개발자가 GNU 를 한국 개발자들이 (지엔유)로 발음하는 것을 (그누~) 로 발음해야 한다는게 기억에 남는다.

초기의 공개 유닉스

1990년 초, 독점적 유닉스를 "해킹" 하려는 10여 년간의 해커 그룹의 노력이 실패로 끝났다는 것이 IT 업계에 공식적인 뉴스로 언급되며, 이제 개인의 기술 영웅주의가 끝났으며, 소프트웨어 산업과 초기 인터넷이 점점 더 마이크로소프트와 같은 거인에 의해 지배된다는 것을 보도했다.

다행히 1993년 후반에서 1994년 사이에 언론과 해커 들 사이에서 눈에 띄지 않고 진행된 작은 일이 해커 문화를 아주 다른 방향으로 이끌고 생각지도 못한 성공을 거두게 되는데, 그것이 현대 대부분의 IT 시스템의 근간으로 사용되는 리눅스이다.

1991년에 헬싱키 대학생 리누스 토발즈는 자유 소프트웨어 재단의 도구를 이용해 386 기계를 위한 공개 유닉스 커널을 개발하기 시작했고, 완전히 자유롭고 재배포 가능한 소스로 구성된 유닉스인 리눅스를 개발하는 것을 중점으로 진행했다.

당시 해커 들은 운영체제처럼 복잡한 소프트웨어는 비교적 작고 잘 구성된 엘리트 모임에 의해 주의 깊게 조정되며 개발돼야 한다고 믿고 있었는데, 리눅스는 처음부터 인터넷에 의해서만 조정되는 수많은 자원자에 의해 우연히 해킹되었다.

품질은 엄격한 표준이나 독재로 이루어지지 않았으며, 매주 릴리스 되었고 며칠 안에 수백 명의 사용자(개발자)들로 부터 피드백을 받았고, 리누스 토발즈도 훗날 당시 주요 커널 소스코드를 이메일로 주고 받으며 수작업으로 일일이 코드를 병합했던게 제일 힘들었다고 언급하니 당시 그의 개발 방법은 기존 개발 방식과는 완전히 다른 방식으로 발전한 것을 알 수 있다.

그런 면에서 리눅스의 가장 중요한 특징은 기술적인 것이 아니라 사회적인 것이었다. 당시 국내와는 다르게 초기 리눅스는 찰스 다윈의 진화론에서 중요한 개념인 다윈주의적 적자생존의 선택을 할 수 있게 하는 단순하지만 파격적인 전략에 의해 개발자들이 지속해서 변화를 관리했다. 이에 대한 것은 에릭 레이먼드도 동의하는 글을 쓰며 리눅스의 성공을 설명했다.

성당과 시장

성당과 시장은 리눅스의 역사가 제시한 놀라운 소프트웨어 공학 이론을 신중히 검토해 보려고 진행한 페치메일 오픈소스 프로젝트의 경험을 바탕으로 작성한 에릭 레이먼드의 개발 이론이다.

그의 이론은 근본적으로 서로 다른 개발 방식의 용어로 사용되는데, 상업용 소프트웨어의 독점적 개발 방식인 "성당" 모델과 오픈소스 기반의 규칙과 제한이 없는 "시장" 모델을 가리킨다.

페치메일 오픈소스 프로젝트의 기회를 얻기 위한 에릭 레이먼드가 무에서 유를 만드는 게 아닌 기존의 오픈소스 프로젝트에서 본인의 니즈와 가장 가까운 프로젝트를 이어 받기 위해 언급한 교훈은 현대 사회에서 개발 중인 개발자 들에게도 크게 다르지 않게 적용될 수 있을 것 같다.

  • 모든 좋은 소프트웨어는 개발자 개인의 가려운 곳을 긁는 것으로부터 시작된다. (소프트웨어 개발자들은 너무나 자주, 단지 돈 때문에 그들이 필요하지도 않고 좋아하지도 않는 프로그램을 만드는 데 시간을 쓰고 있다. '내가 원하는 것과 가장 가까운 프로그램은 무엇일까?')

  • 좋은 프로그래머는 어떤 프로그램을 만들어야 할지 안다. 위대한 프로그래머는 어떤 프로그램을 다시 만들어야 할지 그리고 재사용해야 할지 안다. (위대한 프로그래머의 중요한 특징 중 하나는 건설적인 게으름이다. 완전한 무에서 시작하는 것보다는 부분적으로나마 좋은 해결책에서 시작하는 게 대부분 더 쉽다.)

  • 갖고 있는 것을 버릴 계획을 세우라. 언젠가는 버리게 될 것이다. (프레더릭 브룩스, 『맨먼스 미신』 11장 중에서)

  • 적절한 태도를 갖고 있으면, 흥미로운 문제가 당신을 찾아갈 것이다.

  • 프로그램에 흥미를 잃었다면, 프로그램에 대한 당신의 마지막 의무는 능력 있는 후임자에게 프로그램을 넘겨주는 것이다. (한 가지 문제는 후임자가 적임자라는 것을 어떻게 입증할 수 있느냐 하는 것이었다.)

  • 사용자를 공동 개발자로 생각하면 코드가 다른 어떤 방법보다 빠른 속도로 개선되며 효율적으로 디버깅할 수 있다.

  • 일찍 발표하고 자주 발표하라. 그리고 사용자의 소리에 귀를 기울여라.

  • 충분하게 많은 베타 테스터와 공동 개발자가 있으면, 거의 모든 문제는 빠르게 파악될 것이고 쉽게 고치는 사람이 있게 마련이다.

  • 자료구조를 훌륭하게 만들고 코드를 멍청하게 만드는 것이 그 반대 경우보다 훨씬 잘 작동한다.

  • 베타 테스터를 가장 중요한 자원으로 여긴다면 그들은 정말 가장 중요한 자원이 되어준다.

  • 좋은 아이디어를 생각해 내는 것 다음으로 중요한 일은 사용자가 알려준 좋은 아이디어를 깨닫는 것이다. 때로는 이편이 더 나을 수도 있다.

  • 종종 가장 충격적이고 혁신적인 해결책은, 당신 자신이 문제에 대해서 가지고 있는 개념이 잘못돼 있다는 것을 깨닫는 것에서 나온다.

  • 설계에서 완벽함이란 더 이상 추가할 것이 없을 때 이루어지는 것이 아니라 더 이상 버릴 것이 없을 때 이루어진다.

  • 어떤 도구든지 기대하는 방법으로 쓸모가 있어야 하지만 정말 위대한 도구는 사용자가 전혀 기대하지 않았던 용도에 알맞게 된다.

  • 재미있는 문제를 풀어보고 싶다면, 자신에게 재미있는 문제를 찾아 나서는 것부터 시작하라. (가장 뛰어난 해킹은 해커의 일상적인 문제를 푸는 개인적 인 해결책부터 시작된다.)

에릭 레이몬드는 리누스 토발즈의 가장 영리하고 중요한 해킹은 리눅스 커널을 만든 것이 아니라 리눅스 개발 모델을 만든 것이라고 평가한다.

성공적인 시장 방식 개발을 위한 선행 조건은 프로젝트가 공개되는 시점에 메인 개발자의 자질과 코드가 어떤 상태인지가 중요하다. 처음부터 시장 방식으로 개발할 수 없다는 것은 자명하다. 테스트, 디버깅, 개선은 시장 방식으로 할 수 있다. 하지만 프로젝트를 시장 방식으로 시작하기는 매우 어렵다.

프로젝트에 합류를 하는 개발자는 어느 정도 기본적인 수준의 설계와 코딩 기술은 물론 필요하지만, 시장 방식 프로젝트를 시작하려고 심각하게 생각하는 사람이라면 그런 정도는 적어도 넘어섰으리라고 기대한다.

개발 시장은 다른 직업에 비해 분명히 다른 점이 있는데 개발자들 사이에 평판에 대한 미묘한 압력을 사람들에게 가한다. 그래서 지속적으로 따라갈 경쟁력이 없는 사람은 개발 프로젝트를 시작하지 않게 된다. 이것은 그때나 지금이나 잘 들어 맞는 것 같다.

반드시 개발자 공동체가 초기에 실행하고 테스트할 수 있는 장난감이 필요하다. 공동체를 만들기 시작할 때 제시해야 하는 것은 그럴듯한 장래성이다.

프로그램이 특별히 잘 동작할 필요는 없다. 조잡하거나, 버그투성이여도 되고, 완성되지 않고 문서가 형편없어도 상관없다. 하지만 한 가지 확실하게 해야 할 것은 잠재적인 공동 개발자들에게 이것이 머지않은 미래에 정말 괜찮은 무언가로 진화할 수 있다는 것을 이해시키는 일이다.

더 많은 이야기

이 글의 성당과 시장의 일부를 언급한 내용이다. 성당과 시장은 무료 도서이며 다음의 URL 에서 epub, pdf 문서를 다운로드 할 수 있다.

https://www.oss.kr/oss_guide/show/64be57d5-5919-4069-9643-13827b7c69c3

1
0
조준철

조준철

2024년 회고와 2025년 만드라트 계획

2024년 회고

인생이 계획대로 되는 일은 거의 없다고 생각해서 개인적으로 장기적인 목표를 세우고 계획을 만드는 것을 즐겨하는 편은 아닙니다. 단기적인 목표를 세우고 그것을 달성하는 것을 즐기는 편이지요.

어찌보면 주먹구구식으로 사는 듯한데, 올 해가 을사년이다보니 (제가 뱀띠라 웬지 반갑...) 작년 동안 사이드 프로젝트로 시작해서 메인 프로젝트로 진행 중인 HandStack 에 대한 여정으로 2024년을 회고하고 2025년 계획하는 것으로 시작 해 봅니다.

GitHub 릴리즈 v1.0.0 ~ v1.1.3

HandStack 1.0.0 기점으로 1.1.3 릴리즈를 배포할 때 까지 381 건의 커밋과 803 건의 파일 변경하며 대략 1년 정도의 여정 동안, 다양한 버그 수정과 안정성 및 기능 개선이 이뤄졌습니다.

GitHub 전체 변경 내역

개인적인 성취

작년에는 개략적으로 "HandStack === 클라우드 네이티브 앱 개발 및 관리 SDK" 컨셉을 명확하게 하는 일에 몰입했습니다. 뒤돌아 정리해보니 100% 기준으로 개발 70%, 문서 20%, 커뮤니케이션 10 % 비율로 크게 3 가지로 요약이 가능하더군요.

작년 초까지 혼자 모든 것을 담당하고 있었고, 지금은 각각 다른 분야에서 활동중인 4 명이서 개발, 확장, 컨설팅 영역으로 나누어 진행중입니다.

주요 진행 성과

  • GitHub 에 HandStack 오픈소스 공개 및 개선

  • 앱 개발 및 설정, 배포 자동화를 지원하는 CLI 프로그램

  • https://handstack.kr GitHub 에 문서 사이트 오픈소스 공개 및 문서 추가

  • https://www.youtube.com/@handstack-kr 유튜브 채널 오픈 및 컨텐츠 게시

  • HandStack 기반 메인 소스코드 관리 filehub 확장 모듈 진행 중

이외에 소소하게 HandStack 기반으로 상업적인 프로젝트를 진행 중이고

  • HandStack 기반 기업 그룹웨어 easywork 확장 모듈 개발 완료 및 안정화 진행중

  • HandStack 기반 개발 소스코드 공유 플랫폼 handsup 확장 모듈 진행중

추가적으로 향후 로드맵에 포함되어 있는 상업용 확장 모듈 계획중입니다.

  • mojito 모듈 개발 (브랜드 쇼핑몰)

  • collabic 모듈 개발 (사내교육관리)

  • engineering 모듈 개발 (모니터링 & 변경관리 기능)

  • operations 모듈 개발 (작업 스케줄링)

도전 과제 인지

2024년에는 향후 비즈니스를 위한 Vertical 기술 영역을 중점적으로 활동하다보니, 일방적인 소통 방식에 대해 개선의 필요성을 고민하게 되네요.

S/W 는 크게 일반적인 용도의 업무 사용자를 대상으로 하거나 전문적이고 특정 분야의 사용자를 대상으로 코어 역할을 담당하는 솔루션/프레임워크/라이브러리로 구분할 수 있는데요.

HandStack 은 개발자와 엔지니어가 적은 비용으로 앱 개발과 운영에 도움을 주는 영역을 담당하고 있다보니 도입 초기에 어려움이 있다는 의견이 있었습니다. 그래서 올해에는 기술적인 부분보다 Horizontal 업무 영역에서 다양한 활동들을 계획해야 하는 필요성을 인지하게 되었습니다.

2025년 만드라트 계획

2025 Plan.png

개인적으로 올해 달성해야 할 목표를 "HandStack 기반으로 진행하는 상업적인 IT 서비스 프로젝트를 100 개를 실행" 하기 위해 개발자들과 개발 전문업체와 네트워킹을 진행하며 진행과정을 기록 해보려고 합니다. 연말이나 내년 초에 정리해서 공유하겠습니다.

HandStack 은 동일한 환경에서 경쟁과 성장을 원합니다.

이제 S/W 를 통한 고객의 문제 해결 역량이 모든 기업에게 선택이 아닌 필수인 시대가 되었다는 것은 누구나 알고 있고, S/W 경쟁력을 갖춘 기업이 시장을 주도할 것이기 때문에 디지털 전환 시대의 흐름에 따라 효율적인 시스템 구축 역량을 확보하는 방안을 고민하게 될 것입니다.

개인적으로 핵심 기술은 모두가 동일하게 공유하고 특화되는 업무 영역에서 경쟁과 성장을 유도하는 점에서 에릭 레이먼드의 "성당과 시장" 모델을 추구합니다.

HandStack 소스코드가 인터넷을 통해 일반에 상업적 사용에 제한이 없는 공개된 상태로 개발이 진행되어, 많은 개발자들이 자유롭게 참여하고, 다양한 피드백과 기여를 통해 소프트웨어가 발전하기를 기대합니다.

누가 HandStack 에 관심을 가져야 할까요?

IT 업계가 시스템 구축에 필요한 개발과 운영을 별도 업무로 여기기 때문에 개발 결과물에 대한 Q/A 만 통과하면 사실상 개발자의 역할이 종료되는 것을 당연하게 생각합니다. 그래서 개발 업무 프로젝트의 마지막 단계는 납품인 경우가 적지 않았고 운영 업무에 개발자가 영향을 줄 수 없는 경우가 있었는데요.

전통적인 패키지 제품 개발에서 클라우드와 서비스형 소프트웨어(SaaS)를 구축하기 위한 IT 기술의 발전으로 인해, 개발과 운영의 경계는 희미해져 지금의 운영 문제는 전통적인 운영 부서가 해결할 수 있는 수준이 아닙니다.

관리자는 비용 효율적인 시스템 구축 역량을 어떻게 유지할 수 있는 지에 대한 기술 선택과 인력 운영에 대한 고민과 개발자는 업무와 시스템 운영의 문제를 이해하고 이에 준비된 소프트웨어를 만들 어야 하는것이 필수적입니다.

HandStack 은 프로젝트 규모에 상관없이 동일한 환경에서 개발, 보안, 확장이 가능한 방안을 제공하기 때문에 이에 대한 관심이 있으신 분들에게 적합합니다.

개발자와 엔지니어에게 제공하는 가치

화면과 기능을 분리하여 HTML5, SQL, 서버함수(C#, Node.js, Python [올해 예정]) 만으로 앱을 만들 수 있고, 일정한 패턴과 품질로 코드가 구성되어, 개발자라면 쉽게 코드를 파악 가능하여 유지보수에 이점으로 적용할 수 있습니다.

이에 따라 프로젝트 갯수가 늘어나고 담당 일이 점점 많아져도 새로운 직원들과의 협업과 인수인계에 도움을 줍니다.

CTO 또는 관리자에게 제공하는 가치

  • 공개 SW 기반 비 독점적 비용 구조로 부담없이 기업 내 도입을 검토할 수 있습니다.

  • 개인 또는 여러 팀원에게 시스템 구축에 필요한 업계 표준의 개발/업무 지식을 공유 가능합니다.

  • 업무 규모에 따라 모놀리식, 마이크로서비스 아키텍처 기반의 시스템 인프라를 자유롭게 구성 가능합니다.

  • 특정 운영체제와 통합 개발 도구에 의존하지 않는 앱 개발이 가능합니다. (Windows, macOS 에서 선호하는 개발 도구에서 개발하고 Linux 서버에 배포 가능)

  • 확장을 위한 GitHub의 다양한 상용/공개 SW 와 nuget, npm 패키지 활용 가능합니다.

2025년, 개발자와 엔지니어 분들의 성공과 성장이 가득하길 바랍니다! 🚀🎉

2024년의 성과와 도전 과제를 돌아보며, 2025년에는 더욱 큰 성장을 이루시길 바랍니다. HandStack의 여정이 많은 개발자와 기업들에게 영감을 주고, 함께 성장하는 기회가 되기를 기대합니다. 새로운 해에는 더욱 많은 프로젝트와 협업을 통해 목표를 달성하도록 노력하겠습니다.

읽어 주셔서 감사합니다.

https://github.com/handstack77/handstack

1
0
조준철

조준철

IT 기술 창업 톺아보기 (2)

글을 쓰다가 갑자기 현타가 왔습니다. 이번 글에서 창업 전략에 대한 내용을 다룰려고 했는데, 어느정도 글을 써보니 결국 지금은 사업을 잠시 중단하고 다시 직장 생활을 하고 있는데 아무리 전에 고민을 한 주제라고 해서 제가 이야기를 하는 것이 적절하지 않은 것 같아 창업 전략에 대한 검색 키워드 정도만 언급하고 사업 아이템에 대한 경험담 위주의 글로 정리하려고 합니다.

창업 전략 주제 키워드

  • 투자를 받기 위해

  • 네이밍과 브랜딩

  • 메일주소는 온라인 명함

  • 누구와 함께 해야 하는가?

  • 개발자를 구하고 유지하는 법 (신입 vs 경력)

  • 비즈니스의 가치가 만들어 지려면

  • 전시회, 박람회를 최대한 활용해서 홍보

  • 조직운영, 직함 체계 정하기

  • 대표병을 조심하자

  • 창의력을 죽이는 나쁜 습관

  • 돈의 흐름 이해하기

  • 투자유치자료(Inverstor Relations) 작성법

  • 미션(Why), 핵심가치(How), 비전(What)

지난 글에 이어서…

저와 같이 기술 기반 실무지식을 바탕으로 창업을 생각 하고 계시는 경우 다음 질문에 답을 해야 합니다.

내가 제일 잘하는 일로 팔릴만한 제품이나 서비스 또는 컨텐츠를 3개월 내에 보여 줄 수 있는가?

왜냐하면 잘하다 보면 재미가 있어서 오래할 수 있는 동기가 붙기 때문이고, 십원 짜리던 백만원 짜리던 팔릴 만하다는 것은 가치 있는 것을 만들 수 있으며, 3개월내 보여줄 수 있는 것은 그 동안 해당 분야의 전문 지식을 꾸준히 쌓으며 준비 해왔다는 것을 의미하기 때문입니다.

기업의 본질은 수익 모델을 만드는 것인데, 뛰어난 기술만 가지고 섣부르게 사업을 시작하면 남의 일만 해주는 용역 서비스를 하는 것과 차이가 없게 되어버려서, 이럴 때는 사업보다 프리랜서로 전향하여 다양한 프로젝트에 참여하여 경력과 고객을 확보해두는 것이 장기적으로 더 나은 선택이 될 수 있습니다.

회사 소유권 이해하기

현재 회사를 다니고 있다면 회사 업무시간에 만들어낸 모든 저작물과 도구는 기본적으로 회사 소유라고 생각해야 합니다.

특히 IT 분야의 경우 내가 만들어낸 기획, 캐치 프레이즈, 디자인, 캐릭터, S/W, 프로그램 소스 코드, 기술 알고리즘 등등 복제가 쉽기 때문에 업무 시간내에 만들어 낸 저작물들과 외주를 받아 만들어낸 결과물에 대한 모든 권리는 기본적으로 회사에 있습니다.

이것은 모든 국가에서 공통적으로 영업비밀보호법에 의하여 보호되고 있는 회사의 권리인데, 본인의 노력으로 얻어진 결과를 본인의 것이라고 생각하기 쉽습니다.

그래서 창업을 하기 위해 직장인의 경우에는 동종 업계에서 유사한 기술 기반 사업 아이템을 만들게 되면 보편적으로 널리 알려진 기술인것을 입증하거나 특허, 저작권, 회사 규정에 문제가 있는지 검토해야합니다.

이 부분은 본인의 사업에 직원을 채용하게 되면 동일하게 적용하게 됩니다. 저는 이것을 염두해서 기술은 투명하게, 제품과 서비스로 승부하기 위해 사이드 프로젝트로 진행중인 HandStack 을 오픈소스로 공개하고 회사의 프로젝트에 적용하고 있습니다.

MVP 이후의 고민…

본인의 아이디어를 믿고 묵묵히 실행하면 결과가 만들어진다는 믿음으로 사업 아이템을 만들면 MVP 까지는 만들게 되는데 어느 선에서 부터 정체가 발생합니다.

이쯤에서 아이템의 기능을 더 개선하고, 완성도를 높여야 할 것인지, 현재 상태에서 고객층을 확보하고 시장에 진입을 할 것인지 고민을 하게 되었는데, 이때 부터 1인 기업의 한계가 크게 다가오기 시작 했습니다.

일단 개발중인 MVP 수준의 아이템을 지인중에 IT 분야를 잘 모르는 공무원, 비슷한 수준의 개발자, IT 솔루션 컨설턴트 세 명에게 시연을 해서 피드백을 받게 되었는데 공통적으로 알게된 것은 사업 아이템이 B2B 시장에 적합한 것으로 보여지고, 회사에 납품을 하기 위해서 MVP나 베타 버전과 같은 수준이 아니라 기능이 적더라도 확실한 수행을 할 수 있는 정식 버전과 이에 대한 제품의 브랜딩, 상업적 라이선스에 대한 것을 준비해야 하는 것 이었습니다.

회사 대표의 미션 세 가지

위에서 언급한 IT 솔루션 컨설턴트 지인과는 20년 넘는 인연으로 같이 개발 업무로 시작해서 여러 프로젝트를 같이 하며 서로의 장단점을 잘 알고 있는 사이입니다.

그에게 MVP를 시연하고 식사를 하며 받은 조언이 “지금 너에게 중요한 것은 만드는 게 아니라 브랜딩” 이고, 주어진 역할 마다 반드시 해내야 할 미션들이 있는데 그 중에서 대표이사의 주요 미선은 “고객, 투자자와 커뮤니케이션” 이라며 사업 아이템에 적합한 회사 대표님들과의 미팅을 주선을 해 주었습니다.

회사 대표님들과의 미팅에서 얻은 인 사이트는 다음과 같이 세 가지로 요약할 수 있습니다.

  • 사람 잘 모셔오고, 잘 내보내기

  • 사업 자금(대출, 투자, 매출) 구해오기

  • 고객, 투자자, 팀원 커뮤니케이션

IT 분야는 직업 특성상 직장 생활을 오래 하더라도 다양한 사람들을 만나기가 쉽지 않은데 그러다보면 "나"를 기준으로 상황을 판단하다가 "너"를 기준으로 주변을 돌아 보게 되는 것을 조금 늦게 알게 되나봅니다. 그동안 내가 맡은 일에 대해서 결과로 보여준다는 자부심을 가지고 해왔었는데…

회사 대표님들과의 미팅 자리가 지인 소개가 아닌 콜드 메일, 콜드 전화로 얻은 자리였다면 같은 분위기에서 좋은 피드백을 받을 수 있었을까요?, 좋은 성과를 내기 위한 커뮤니케이션 스킬은 단순한 대화 기술이 아니라 인간 관계에서 시작되는 것을 의미하는 것을 알게 되면 내향적인 성향은 사업하기 쉽지 않다는 것을 느끼게 합니다.

쫄지 말고, 번아웃을 주의하기

규모를 떠나 안정적인 수익 모델을 확보하고 있는 회사 대표님들과 만나게 되니 공통점을 하나 발견했는데 비즈니스는 인간 관계로 시작해서 "돈을 다루는 사람"의 이해 관계를 따라 흐른다는 것을 각자 분야에서 자신만의 방식대로 터득을 하게 되었다는 겁니다.

대부분 사업을 시작하고 안정화 될 때 까지의 고생 했던 이야기를 듣다보면 앞으로 다가올 내일 같이 느껴져서 생각이 많아지게 되었는데요.

이 시점에서 짧은 기간이지만 심리적으로 앞으로 해야 할 것들에 대한 부담이 되기도 하고, 지금 사업 아이템에 대한 방향성을 확실히 정하지 못한 상황에서 예상하지 못했지만 내가 부족한 부분을 채우지 못한채 앞만 보고 달려가는건 아닌거 같아 이도저도 못하다가 번아웃을 겪게 되는데…

몇 일 정도 정말 멍 하게 있다가 슬슬 멍하게 있는게 지겨워져서 생각을 길게 하지 않고 당장 눈 앞에 있는 내가 할 수 있는 일들을 하나하나 체크리스트로 만들어 그냥 하게됩니다.

그래서 기술 창업으로 사업화는 잠시 묻고 지금 하고 있는 일들이 누구를 위한 일이며, 왜 하는지에 대한 물음과 그것에 대한 실마리를 되새기며 사이드 프로젝트로 시작했던 것을 여기까지 유지하면서 만들어 낸 것을 어떻게 효과적으로 피벗을 할 수 있을까?에 집중하게 됩니다.

사업 성공의 핵심은 끈기

학연, 혈연, 지연으로 만남의 기회를 만든다는 이라는 것이 공정성인 측면에서 부정적인 의미로 들릴 수 있겠지만 내 기준에서 비 합리적인 것이나 말도 안된다고 생각하는 것도 업계에 관례로 있다면 나름 그만한 이유가 있을겁니다.

그래서 기존의 방식을 내려놓고 어느정도 “유” 해져야 하는데 그게 말처럼 쉽지는 않네요.

사업에서 성공하기 위해서는 다양한 사람들과의 만남이 필수적입니다. 새로운 기회는 종종 예상치 못한 만남에서 비롯되며, 이러한 만남을 통해 MOU를 맺으며 사업의 방향이 결정되기도 합니다.

사람들과의 소통에서 중요한 것은 텍스트나 전화 음성으로 전달하는 단순한 말이 아니라, 대면 상에서 이뤄지는 눈빛, 말투, 몸짓을 통해 상대방에게 중요한 존재로 여겨진다는 느낌을 전달하는 것입니다. 상대방의 이야기에 진심으로 귀 기울이고, 공감하는 태도를 보이는 것이 중요합니다.

저의 경우 여기까지 생각을 정리하고 사업으로 성공하는 사람들을 다시 보니 이러한 비언어적 소통으로 신뢰를 쌓고, 깊은 인간관계를 형성하는 데 자연스럽고 익숙하다는 것이 보이기 시작 했습니다. 같은 말이어도 표현 방법과 단어의 선택이 평소 그 사람의 지식 수준과 인성으로 느껴질때 부럽기도 하면서 부끄럽기도 합니다.

지금은 직장을 다니면서 사이드 프로젝트로 HandStack 를 유지하고 있는데 문서화나 예제에 대한 컨텐츠에 대해 늘 부족한게 많다고 느껴지지만 당장의 결과에 조급해지지 않도록, 매일 100 정도의 활동양이 필요하다고 하면, 120 이 아니라 10 이라도 꾸준하게 하는 것을 목표로 하고 있습니다.

이번 글에서 요약

저에 대한 장점은 주관적이라 생략하더라도 약점에 대해 정리를 하다보니 개인적으로 제 성향 자체가 창업에 적합하지 않다는 것을 깨닫게 되어 개선해야 할 부분을 다음과 같이 세 가지로 정리 했습니다.

  • 베타 버전을 떼고 제품의 완성까지의 시간과 비용을 계산하지 못하는 것

  • 사업의 성공은 누군가가 나를 좋아해주는 성공적인 인간 관계에서 시작됨

  • 기술 기반 사업을 통해 혁신을 이끄는 사람들과 네트워킹 부재

읽어주셔서 감사합니다.

2
0

포스트

아직 포스트가 없습니다.