'운영툴 개발 시간은 왜 부족할까?'

'운영툴 개발 시간은 왜 부족할까?'
Photo by Tim Gouw / Unsplash
🗞️
본 글은 셀렉트 팀의 김학범님이 웹 개발 강의를 듣고 경험한 것을 바탕으로 기고한 내용입니다. 작성자는 운영툴, 어드민 문제에 몰두하고 있습니다.

최근 밤에 30분~1시간씩 짬을 내어 5주간 스파르타코딩클럽의 웹개발 종합반 강의를 들었습니다.

저는 초기 IT 스타트업에서 고객지원과 데이터 분석, 프로젝트 관리 등의 업무를 맡아왔는데요. 그동안 IT와 개발에 대한 지식을 눈치껏 파악하거나, 논리적으로 추론하거나, 잘 모르는 개념을 검색하면서 배워갔습니다.

업무를 수행하는데 있어 큰 이슈는 없었지만, 묘한 아쉬움과 투명한 장벽이 있는 기분이었습니다. 이런 아쉬움을 해소하고자 무료부터 유료 강의까지 이런저런 시도들을 해봤지만 웹개발을 전체적으로 이해하는 강의를 성공적으로 완주하지는 못했었습니다.

수료증도 받았어요!

연말과 새해를 맞이해 스파르타코딩클럽의 대표님(목소리 톤이 귀를 사로잡습니다. 😅)이 나오는 광고 덕분에 커리큘럼을 살펴보았고 제게 필요한 강의라 보았습니다. 저렴한 가격은 아니었지만 완주를 하고나니 만족스럽습니다.

만족스러운 이유?

완주 후 웹개발에 대한 이해도가 확실히 높아졌습니다. HTML과 CSS 등 프론트엔드부터 서버, 백엔드 개발, 데이터베이스 그리고 배포까지 웹개발의 한 사이클을 돌리는데 집중하는 강의였습니다.

그동안 코끼리를 묘사하는 말과 글들만 봤다면, 코끼리를 직접 보고 직접 그려보는 경험이었습니다. 짧은 시간인 만큼 웹개발의 모든 면을 이해하고 개발자가 될 수 있다기보단, IT 조직의 PM/PO들에게 적합해보입니다.

당연하게도 개발자의 말들이 더 잘 이해됩니다. 동시에 소프트웨어를 만들 때 얼마나 많은 어려움과 절차가 있는지 느껴집니다.

운영툴도 결국 소프트웨어이기 때문에 저희 팀이 만들고 있는 '셀렉트' 서비스가 얼마나 간단한지도 체감됩니다. (정말 좋은데 어떻게 표현할 방법이 없네 🤔)

운영툴 같은 소프트웨어를 만들 때

이처럼 소프트웨어를 만들 때 무엇이 필요한지는 개념적으로 알고 있었지만, 작게나마 직접 코드를 작성해본 다음의 생각을 한번 정리해보았습니다.

프론트엔드

적당한 프론트엔드 툴킷을 찾아야합니다. 전통적이고 탄탄한 부트스트랩 Bootstrap부터 최근 빠르게 성장한 TailwindCSS까지 다양한 프론트엔드 프레임워크가 있습니다. 기본 디자인에서 벗어나고 싶다면 부트스트랩 기반의 유료 템플릿을 구매하는 것도 방법입니다.

2022 CSS Framework Stats

백엔드, 서버

파이썬 Python을 쓸지, NodeJS를 쓸지, 자바 Java를 쓸지 마음대로 정할 수 있는 문제는 아닌듯 합니다. 대부분 개인 또는 팀에게 익숙하거나 자주쓰는 언어 기반으로 가게 됩니다. 2개 이상의 언어를 이용할 때는 담당자에게 익숙한 언어가 선택될 가능성이 높습니다. 특히 어드민, 백오피스 툴 개발과 같이 시간이 부족한 상황은 더욱 그렇습니다.

데이터베이스

제가 들은 강의에서는 몽고디비 MongoDB를 사용했습니다만 MySQL이나 PostgreSQL 등 RDB가 아직은 많이 쓰이고 있습니다. 강의 덕분에 MongoDB와 같은 NoSQL에 대한 이해가 높아졌는데, 확실히 SQL 데이터베이스가 간단한 SQL 쿼리로 데이터를 추출하고 써먹기에 더 편리하다는 느낌입니다.

물론 다양한 로깅을 쌓아야하거나, 데이터베이스 변화가 많고 구조화하기 어려울 때 등 NoSQL의 장점이 있기 때문에 '어떤 디비가 무조건 좋다!'라는건 없겠습니다.

배포

강의에서는 AWS Elastic Beanstalk을 이용해 배포하였습니다. 배포는 정말 복잡한 것 같습니다. 제가 경험한 과정은 단순하고 통제된 환경이었지만, 실제 환경에서는 문제가 다양하겠네요.

많은 개발 언어 패키지가 생기면서 생산성은 높아졌지만, 패키지 버전이나 다른 패키지 간의 충돌 등으로 배포가 실패하기 쉽겠다는 생각이 듭니다. 스타트업이 성공하기 위해서는 배포를 안전하면서 쉽게 관리해야합니다.

사용자 관리와 접근 제어 시스템

운영툴에 접근할 수 있고, 어떤 데이터나 페이지는 누구에게 제한되어야하는지 등을 관리하기 위해서는 사용자 관리와 접근 제어 시스템이 필요합니다.

  • 사용자 추가
  • 사용자 수정
  • 사용자 삭제
  • 권한 그룹 추가
  • 권한 그룹 삭제
  • 권한 그룹에 사용자 추가
  • 권한 그룹에 사용자 삭제
  • ...

웹개발을 더 이해하고나니 할게 더 많아보이네요. 왜 이렇게 하나씩 다 쪼개서 생각해야되는지, 어떻게 쪼개야 개발자와 소통이 더 쉬울지 와닿습니다.

셀렉트 내장 기능 화면 일부

서비스 로깅

어떤 페이지에서 어떤 행동을 했는지 기록을 해둬야할 때가 있습니다. 실수를 하여 어떻게 되돌려야하는지 알고 싶거나, 일어나서는 안될 일이지만 사건사고로 인해 어드민에서 데이터가 유출될 수도 있기 때문이죠.

패키지 버전 관리

소프트웨어를 만들기 위해 사용한 프레임워크들의 버전 차이나 설치된 패키지 간의 충돌로 인해 문제가 생길 수도 있습니다.

인수인계와 개발 언어

다른 개발자에게 인수인계를 해야하는 상황이 왔습니다. 그런데 프로그램을 구성한 언어와 프레임워크를 써본적이 없으시다고 합니다. 개선에 시간이 더 걸릴 가능성이 높아집니다.

파이썬 Python, 노드JS nodejs, 자바 Java.. 도대체 무슨 차이일까요? 왜 Python을 하던 분이 nodejs를 하면 개발 속도가 느려질 수 밖에 없는걸까요?

비유를 하자면, 스페인어를 하던 사람이 포르투갈어를 해야하는 것과 비슷하지 않을까 합니다. 문법이나 비슷한 단어들이 많아 추론이 가능하지만, 실수하지 않고 제대로 쓰려면 사전을 찾아가면서 쓰거나 재학습을 해야하는 것이죠.

챙길게 많습니다.

IT 기업과 스타트업의 모든 직군이 마찬가지지만, 개발자분들도 소프트웨어 개발 영역만으로도 챙길게 많아보입니다. 운영툴도 소프트웨어이기 때문에 만드는데 시간이 필요할 수 밖에 없어보입니다.

PM이나 개발자이신가요?

웹개발 학습에 대한 소회에서 시작했지만, 셀렉트가 해결하고자 하는 문제와 고충에 더욱 동기화가 되었습니다.

프로덕트 매니저(PM)시라면

스파르타코딩클럽 웹개발 종합반을 한번 검토해보세요. 두루뭉실하던 개념이 정립되고 대략이나마 코드가 어떻게 구성되겠구나라는 싶습니다. 비유는 비유대로 이해를 돕지만, 직접 있는 그대로 이해했을 때 오는 장점은 또 다른듯 합니다.

물론 모든 PM이나 기획자가 웹개발 강의를 들어야한다고 생각하지 않습니다. 코딩을 직접해보지 않아도 PM 업무를 잘할 수 있고, 이외에 잘해야할 일 또한 많습니다.

다만 약간의 시간 투자만으로 만족스러운 경험이었습니다. 강의에 대해 물어보고 싶거나 어드민에 대한 이야기를 하고 싶다면 카카오톡 오픈채팅이나 이메일로 편하게 문의해주세요.

개발자시라면

셀렉트를 한번 검토해보세요. 직접 개발하시면 정말 많은 시간이 들겠다는걸 느꼈습니다. 만들고 끝나는게 아니고 유지보수와 인수인계도 계속되니까 말이죠.

물론 모든 상황에서 셀렉트가 정답은 아닐 것입니다. 참고하실 수 있게 직접 개발할 때와 셀렉트를 이용할 때의 할 일 비교표를 만들어보았습니다.

구분 직접 개발 셀렉트
프론트엔드 - 프레임워크 선택 - 기본 제공
백엔드, 서버 - 프레임워크 선택
- 환경 구축
- 서버 띄우기
- 기본 제공
데이터베이스 - 데이터베이스 선택
- 디비 서버 띄우기
- 데이터베이스 선택
- 디비 서버 띄우기
사용자 관리 - 인증 시스템 구축
- 사용자 관리
- 권한 그룹 관리
- 기본 제공
접근 제어 - 페이지 접근 제어 - 기본 제공
서비스 로깅 - 로깅 디비 또는 서비스 선택
- 쌓는 방식 고민
- 코드에 추가 작업
- 기본 제공
인수인계 - 코드 리뷰 인수인계 - 스펙 중심 인수인계

어떠신가요? 물론 직접 개발할 때는 자유도가 100%라는 장점이 있습니다. 대신 그만큼 개발 시간이 길어집니다. 빠르게 백오피스 툴이나 어드민 페이지가 필요하다면 셀렉트가 대안 중 하나가 됩니다.

테스트 데이터베이스와 샘플 어드민 또한 함께 제공드리고 있어요. 무료로 가입하셔서 한번 살펴보세요.

→ 무슨 서비스인지 구경하러가기