티스토리 뷰

Study

규모에 따른 개발 프로세스

니용 2023. 4. 16. 14:25
반응형

 

오늘은 이 글을 읽고 계신 분들이 대부분 비개발자임을 감안하거나 개발자인 분들이 보셨을 때 대기업이나 스타트업에서는 개발을 어떻게 진행하고 있는지 궁금하실 것 같아 글을 작성해보려고 합니다.

 

가장 먼저 개발자라는 직군이 낯설고 어려운 분들이 굉장히 많으실 겁니다. 개발자라는 직업군은 그저 컴퓨터 프로그램을 만드는 사람으로 알고 계시는 분들도 계시지만, 그 컴퓨터 프로그램을 만들기 위해 다양한 직군을 가진 분들과 협업을 하면서 고민하고 생각하는 것들이 훨씬 많습니다. 

 

먼저 개발의 프로세스를 간략히 설명해보면, 큰 기업일수록 더 많은 인력이 존재하고 규모가 작은 기업일수록 소수의 정예 인력으로 팀을 구성하고 어떤 개발을 진행할지에 대해 크게 두개의 부류로 나뉩니다. 

 

 

1. 큰 기업인 경우

기업의 규모가 크고 많은 사용자들이 쓸 것 같은 서비스는 주로 여러 개의 팀으로 나뉘게 됩니다.

보통 사업계획서가 나오고 그에 맞게 요구사항 정의를 합니다. 예를 들어 티스토리와 같은 블로그를 만들고 싶다라는 것이 나오면 블로그 화면 구성은 어떻게 될지 사용자들은 왜 이걸 사용하는지등을 구상합니다. 이것을 하나의 프로젝트라고 하고, 프로젝트별로 각각의 프로젝트 매니저(PM)들이 정해집니다. 이런 시작은 보통 기획팀에서 진행하게 되고, 전략과 방향을 세우고 필요에 따라 약관도 정합니다.

구상이 된 화면은 이제 화면 정의서나 화면 기획서등이 나옵니다. 그러면 이제 기획된 화면을 가지고 거기에는 어떤 내용을 담을지, 데이터로는 어떤 내용을 보여줄지, 화면은 어떻게 이쁘게 보여주고 어떻게 화면 내에서 인터랙션이 될지 동작등에 대해서 검토합니다. 이제 여기에서 버튼은 어떻게 디자인되는지, 로고는 어떻게 만들어질지 로고 디자인을 하는지 기획팀과 디자인팀이 같이 의논을 합니다. 

검토가 완료된 화면 기획서는 이제 본격적으로 개발자들이 보고 분석을 진행합니다. 여기서는 사용자 인터페이스라던지 데이터베이스 설계등이 나옵니다. 사용자 인터페이스라고 하면 사용자들이 블로그를 사용하면서 글을 작성하는 에디터 페이지라던지, 다른 사용자들이 적어놓은 글을 보는 상세 페이지라던지, 글들을 정렬해주고 사용자가 공개 또는 비공개 여부에 따라 목록을 표시하는 목록 페이지 등이 있습니다. 이를 프론트엔드 개발팀에서 주로 진행합니다. 

프론트 개발팀에서 요청받은 화면 기획에 맞춰 백엔드 개발팀에서는 데이터를 어떻게 구성하여 저장을 하고, 최대한 데이터가 보여지는데 지장이 있거나 느려지는 것을 방지해서 최적화된 페이지를 보여지게 하도록 데이터베이스를 구성하고, 프론트엔드 개발팀과 논의 하에 정해진 API 명세서를 작성합니다. 여기에는 프론트엔드 개발팀과 백엔드 개발팀이 정의해놓은 여러 가지 API에 대해 이 값은 어떤 것을 의미하는지 정의해놓은 문서를 말합니다. 정해진 규칙에 따라 일을 진행하고, 혹시나 변경이 되는 사항이 있다면 최대한 이전에 개발해놓은 것에 지장이 없도록 추가를 지속적으로 병행 및 반복합니다. 

아키텍트 팀에서는 백엔드에서 구성해놓은 소스 코드를 관리하고 언제 어디 서버로 배포를 할지 배포 전략을 세우고, 백엔드 및 프론트엔드 팀에서 개발자들이 만들어 놓은 소스 코드를 배포하여 안정적으로 서버가 유지될 수 있도록 서버를 구축하고, 필요에 따라 백엔드 팀과 협업하여 서버 및 메시징큐 시스템, 캐시 데이터베이스 및 소켓등의 관리를 같이 번갈아합니다. 서버가 안정적으로 유지되는지 모니터링을 지속적으로 실시하고, 문제가 발생하면 사용자들이 불편을 겪지 않게 즉각적으로 대응하는 팀이다보니 아무래도 야근을 하는 일이 빈번합니다. 그래서 주로 책임자들이 아키텍트 팀으로 많이 속하게 됩니다.

개발만 끝났다고 바로 배포를 하여서는 안되고 사용자들이 사용하면서 버그를 발생하는 빈도를 줄이기 위해 개발팀과 별개로 테스트를 병행하는 QA 팀이 존재합니다. QA란 Quality Assurance(품질 보증)의 뜻을 가지고 있고, 최대한 문제가 없게 수행하기 위해 개발서버와 운영중인 서버를 분리하여 테스트를 수행합니다. 개발서버에서는 다양한 테스트가 진행됩니다. 데이터의 입력 수정 뿐만 아니라 기본적인 조회에서 삭제까지 모든 것을 직접 진행할 수 있습니다. 즉, 제품이 출시되기 전에 다양한 케이스에서의 테스트를 진행하는 것이 개발자의 입장에서는 벅차기 때문에 같이 진행하기 위한 팀입니다. 물론, 치명적인 SQL 오류나 화면이 보이지 않는다는 등의 버그는 개발자들이 주로 수정하는 경우가 많긴 합니다만, 소스 코드의 양이 방대해지고 서비스가 다른 서비스와 연결되어 있어 연쇄적으로 문제가 발생하는 경우를 대비하기도 합니다. 

 

2. 작은 기업의 경우 

위에서는 큰 기업의 규모 내에 인력들이 어떤 팀으로 구성되어 있고, 하는 일을 팀별로 분담화하였기 때문에 일부 인력이 부재이거나 휴가인 경우 대응이 다소 느릴 수도 있습니다. 아무래도 큰 배가 서행을 해서 안전하게 도달하여야 하는 만큼 작은 문제이어도 그것을 고쳐나가는데는 여러 사람의 손이 타기 때문입니다.

작은 기업은 이런 리스크를 발빠르게 대처할 수 있습니다. 아무래도 실무자가 많지 않고 의사 결정이 보다 빠르게 진행되기 때문입니다. 물론 그렇다고 팀 구분이 안되는 것은 아니지만 보통 프론트엔드, 백엔드, 아키텍트, 테스트팀이 나뉘어져 있지 않은 경우가 많습니다. 통합된 개발팀으로 운용하는 회사도 정말 많습니다.

작은 기업에서는 큰 기업과는 다르게 사실 고객 하나하나의 정보가 굉장히 중요하고 필요합니다. 그만큼 스타트업에서는 고객의 경험과 소리를 듣는 것을 필요로 합니다. 고객들이 이탈하는 경우 어떤 점이 불만이었고 왜 이탈을 하는지 알아야 다음에 더 좋은 서비스로 보답을 할 수 있기 때문입니다. 

보통 개발팀은 기획팀에 의뢰를 받고 맡은 바 솔루션을 최대한 유사하고 근접하게 구현하기 위해 최선을 다합니다. 개발팀은 인력이 많지 않지만 그만큼 개인별 존재감이 중요하고, 같은 팀 동료들을 많이 의지합니다. 한 사람이 담당하고 있는 역할이 많아서도 있지만 인력이 중도에 이탈하는 경우 그 부재를 감당하기에는 작은 규모의 회사는 유지하기 어렵기 때문이기도 합니다.

 

개발을 하는 것이 어렵지는 않은지?

사람은 대부분 일을 하면서 성장합니다. 학생 때는 공부라는 것이 어떻게 보면 학생의 의무이자 일이기도 하고, 그러면서 직업이라는 것을 가지게 되고 직업을 가지면 전문분야에 해당하는 공부를 직접 발로 뛰거나 여러 가지 시행착오를 거치면서 일을 배우게 됩니다. 

개발자도 마찬가지로 초년생 때는 선배들이 어떻게 일하고 있고, 업무 방식은 어떤지, 그리고 회사에서는 어떤 문화를 추구하는지에 따라서 성장하는 속도나 방향이 달라지게 됩니다. 

여러 군데의 회사에서 일을 진행하면서 일이 처음에는 어떻게 구성되고 있는지 그런 프로세스를 먼저 보게된 저는 시간이 지나면서 모든 회사에서 같은 개발을 하거나 같은 업무 방식, 그리고 같은 툴을 사용하지 않았다는 것을 알았습니다. 모든 개발자들이 같은 생각을 하지 않는다는 것도 같은 서비스를 개발하더라도 다른 접근법을 사용한다는 것을 많이 느낍니다.

 

개발자에 대한 오해

보통 개발자들은 컴퓨터를 잘하고 머리가 뛰어난 천재들만 하니까 그만큼 앉아서 일할 수 있고, 고액 연봉을 받고 다른 큰 규모의 회사에서 모셔가는 일이 많지 않을까 합니다. 하지만 개발자들은 커뮤니케이션을 훨씬 더 잘해야 더 성장할 수 있고, 나만 잘한다고 해서 개발이 이루어지는 것이 대기업부터 스타트업까지 전체적으로도 불가능한 직업입니다. 

개발자는 흔히 죽을 때까지 공부해야 한다는 생각들이 많이 있으십니다. 맞는 말이긴 하지만 배움이 없이 평생 일할 수 있는 직업이 있는게 있을까 싶습니다. 저 또한 개발자로 경력을 쌓아오면서 느끼는 것이긴 하지만 매번 신기술이 나오고 그런 기술을 지금 내가 사용할 수 있는 준비 상태인지 매번 체크하고 검토합니다.

인터넷 보급이 활발해지면서 개발자들이 더 귀해진 이런 시대에서 개발자들은 하루하루 다르게 다른 사람들이 만들어 놓은 프레임워크, 개발 장비에 적응하는 것이 쉽지 않습니다. 엉덩이가 무거워서 오래 앉아서 일할 수 있는 개발자들보다 되려 이런 생태계에 적응력이 강한 개발자들이 더 오래 살아남을 수 있습니다.

 


 

결론

IT붐인 현재 시대에 많은 기업들에서는 개발자들을 선호하고 다방면으로 채용하고 있습니다. 오늘은 개발자들이 개발을 하면서 어떤 방식으로 개발을 진행하는지 대략적으로만 해보았습니다. 이전에 제가 다닌 경험을 바탕으로 글을 작성하였기 때문에 실제 현재에는 이와 다르게 개발을 진행하는 회사도 굉장히 많을 것이라고 생각합니다. 개발자를 희망하시고, 좋은 회사로 이직을 하고 싶어하시는 개발자분들에게 조금이나마 도움이 되었으면 좋겠습니다 :) 

반응형
댓글
공지사항