백엔드 개발자의 업무
앞서 웹 프로그래밍에 대한 기초 내용을 공부해봤는데요. 그러면 백엔드 개발자는 어떤 일을 할까요? 이 책은 스프링 부트 4를 이용한 백엔드 실무 기초 과정을 다루므로 백엔드 개발자가 어떤 일을 하는지 미리 살펴보면 도움이 될 겁니다. 백엔드 개발자의 주된 업무는 서버 측 애플리케이션을개발하는 일입니다. 개발하면서 서버에 대한 지식과 프로그래밍 지식, 만든 프로그램을 배포하고 안전하게 서비스할 수 있게 하는 지식을 활용합니다. 백엔드 개발자의 업무가 조직마다 천차만별이지만 대개는 ➊ 과제 할당 → ➋ 과제 분석 → ➌ 개발 → ➍ 테스트(리뷰) → ➎ QA 및 버그 수정 → ➏ 배포 → ➐ 유지보수 순서로 진행합니다.
➊ 과제 할당
모든 일은 주어진 과제를 할당하며 시작합니다. 사업부, 마케팅, 개발팀 등에서 개발 과제를 할당합니다. 그럼 개발자가 그 과제를 분석하기 시작하죠!
➋ 과제 분석
예를 들어 어떤 소셜 서비스에서 ‘친구 초대 이벤트를 만들어주세요’라는 과제가 주어졌습니다. 이때 ‘친구’는 무엇인지, ‘초대’는 무엇을 의미하는지, ‘이벤트’는 어떤 조건이 필요하고 초대를 한 친구와 초대된 친구에게 보상을 어떻게 줄지, 이벤트를 위해서어떤 데이터들을 저장하는지를 결정해야 합니다.
또한 제공할 성능과 사용할 기술을 검토하고, 문제가 있다면 해결 방법도 면밀하게 분석하고 정리해야 합니다. 오늘날 서비스는 복잡하므로 작은 기능에서 발생하는 문제 하나가 서비스 전체의 문제로 이어질 수 있으므로 이 과정은 매우 중요합니다.
➌ 개발
과제 검토가 끝났으니 개발을 진행하면 됩니다. 개발 과정에서는 기능을 개발하고, 버그를 수정하는 일이 대부분입니다.
개발한 코드는 깃허브github 등의 프로그램을 사용해 동료의 리뷰를 받고 리뷰에 대한 내용을 반영해서 코드의 완성도를 높입니다.
➍ 테스트
개발을 마치면 코드가 제대로 동작하는지 테스트해야 합니다. 앞서 언급한 과제 분석 → 개발 → 테스트를 반복하며 프로그램의 완성도를 높여가죠. 테스트는 단순히 실행이 잘 되는지만 보지 않습니다. 로직상 문제는 없는지, 성능 한계는 어느 정도인지, 만든 코드가 읽기 편한지, 내가 만든클래스, 메서드, 함수를 다른 사람이 간편하게 사용할 수 있는지 등을 검토하면서 테스트를 합니다. 조직이나 개발자에 따라 단위 테스트를 작성하는 경우도 있습니다. 때로는 개발용 코드보다 테스트를 먼저 작성하는 테스트 주도 개발 기법을 사용하기도 합니다.
➎ QA
개발과 테스트가 어느 정도 마무리됐다면 애플리케이션의 품질을 높이기 위해 QAquality assurance를 신청합니다. QA팀이 없는 회사라면 개발 조직에서 담당합니다.
➏ ~ ➐ 배포와 유지보수
QA가 완료되면 서버에 배포를 진행합니다. 때에 따라서 여러 과제를 한 번에 병합해서 배포하거나, 새로운 기능이 추가될 때마다 배포합니다. 애플리케이션을 쉽고 안전하게 배포하고, 문제 발생 시 쉽게 이전 버전으로 돌리는 작업을 할 수 있도록 준비해야 합니다.
배포 방법은 여러 가지입니다. 먼저, 특정 개수의 서버들을 돌아가며 배포하는 롤링 배포, 똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿔버리는 블루 그린 배포, 전체 서버의 특정 비율만큼 배포해보고 문제없는 경우 점점 배포를 늘려가는 카나리 배포 등이 있습니다. 개발자는 코드의 개발부터 테스트, 배포, 모니터링까지 사실상 무한 반복을 합니다. 여기부터 빌드부터 배포까지의 과정을 자동화할 수 있습니다. 이것을 두고 흔히 CIContinuous Integration/CDContinuous Delivery & Continuous Deployment라고 합니다. CI는 지속적인 통합이라는 뜻으로, 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 저장소에 통합되는 것을 의미합니다. CD는 지속적인 배포를 말합니다. CI는 저장소에 코드가 반영되는 것을 말하고, CD는 실제 프로덕션 환경까지 변경된 코드가 반영되는 것을 의미합니다.
백엔드 프로그래밍 언어
백엔드 개발에 자주 사용하는 언어로는 무엇이 있을까요? 언어의 인기 순위를 매기는 지수인 TIOBE 인덱스에서는 2023년 4월 기준으로 파이썬이 1위입니다. 다음으로 C, 자바, C++, C#, 비주얼 베이직, 자바스크립트 순서입니다. 이 중에 백엔드에서 많이 사용하는 언어는 파이썬, C++, 자바, C#, 자바스크립트입니다.
파이썬은 데이터 분야에서 많이 사용하지만 서버 개발에도 많이 사용합니다. 대표적인 프레임워크로는 플라스크와 장고, FastAPI가 있습니다. C++은 성능이 중요한 게임 서버 개발에서 많이 사용합니다.
자바는 스프링, 스프링 부트라는 매우 강력한 프레임워크를 기반으로 많은 곳에서 서버 개발에 사용합니다. C#은 국내보다는 미국에서 많이 사용합니다. 닷넷 프레임워크가 매우 강력하며 마이크로소프트 계열의 소프트웨어와 호환성이 좋은 편입니다. 개발자들이 자주 찾는 사이트 중 하나인 스택오버플로가 C#을 기반으로 만들었습니다.
자바스크립트는 프론트엔드에서뿐 아니라 백엔드에서도 많이 사용합니다. 대표적인 웹 프레임워크는 익스프레스Express, NestJS가 있습니다.
