백엔드 아키텍쳐

주니어 개발자가 알아야 하는 백엔드 아키텍처|백엔드 스쿨

백엔드 아키텍처, 개발 입문자를 위해 알기 쉽게 설명했어요! 클린 아키텍처 설계의 중요성까지 확인하세요.


백엔드 아키텍처

백엔드 아키텍처 (Architecture) 란?

이 글은 백엔드 개발자로 취업을 준비하는 모든 분들을 위한 글입니다. 이제 막 개발 공부를 시작하는 분들에게는 조금 어렵고 생소한 개념일 수 있습니다. 다만, 분명 실무에서 또는 프로젝트를 진행할 때 알아야 하는 개념 중 하나입니다. 따라서 백엔드 아키텍처란 무엇이고, 클린 아키텍처를 설계하는 게 백엔드 개발자에게 왜 중요한지 이 글에서 모두 확인해보세요!

  •  목차
       1) 아키텍처란?
          (a) 시스템 아키텍처란 ?
       2) 클린 아키텍처 설계의 중요성
       3) 백엔드 개발자가 고려해야 하는 아키텍처

아키텍처란 ?

가장 먼저 사전적 정의를 알아봅시다. 아키텍처란 시스템 구성과 동작원리 그리고 시스템의 구성환경 등을 설명하는 설계도입니다. 이 때 가장 중요한 것은 최적화입니다. ‘설계도'라는 단어에서 알 수 있듯이 아키텍처를 말 그대로 건물의 설계도에 비유해볼 수 있습니다. 설계도를 구상할 때 고려해야 할 것들이 많겠지만 그 중에서도 가장 중요한 것은 사람들의 동선입니다. 아무리 예쁜 건물이더라도 그 건물을 사용하는 사람들이 이동하기 힘든 건물의 구조라면 좋은 건물이라고 할 수 있을까요? 따라서 서비스의 설계도 역시 복잡하지 않게 최대한 단순하게 유지하는 것이 중요합니다.

시스템 아키텍처란 ?

아키텍처에는 여러 종류가 있지만 그 중에서도 넓은 범위의 아키텍처인 시스템 아키텍처에 알아보려고 합니다. 일반적으로 웹 애플리케이션이 돌아가기 위해서는 여러 아키텍처가 통신을 합니다. 사전적으로 시스템 아키텍처를 정의해보자면 ‘하드웨어와 소프트웨어 아키텍처를 기반으로 시스템이 서비스를 제공하기 위한 아키텍처' 라고 할 수 있습니다. 역시나 글로만 읽으면 잘 이해가 되지 않죠?

조금 더 쉽게 설명해보자면, 하나의 웹 서비스를 제공하기 위해 사용자의 계정부터, 사용 기록 등의 다양한 데이터들을 저장해야 합니다. 그러한 데이터들을 저장하고 있는 곳이 스토리지이고, 데이터나 로직을 처리하는 곳이 서버이며, 하나 이상의 서버를 사용하기 때문에 통신할 수 있는 네트워크 규칙이 필요하죠.

스토리지, 서버, 네트워크의 요소들을 어떻게 배치시키는지에 따라서 시스템 아키텍처 종류가 나누어집니다. 시스템 내외부적으로 어떤 플로우로 흘러가고, 어떤 구조로 이루어져있는지 한 눈에 알아볼 수 있어 실제 구현을 하기 전 꼭 거쳐야 하는 작업 중 하나입니다.

백엔드 아키텍처_시스템 아키텍처

이미지 출처 : https://popcorn16.tistory.com/230

클린 아키텍처 설계의 중요성

개발을 조금 공부해본 분들은 아실텐데 개발자분들에게 바이블이라고 할 수 있는‘클린 코드'라는 책이 있죠. 여러 명이 코드를 나누어서 짜고 서로의 코드를 리뷰하는 문화가 발달해있는 개발자들에게 협업, 커뮤니케이션의 중요서을 말하기는 입이 아프죠. 따라서 모든 팀원이 이해하기 쉽도록, 원하는 로직을 빠르게 찾을 수 있도록 작성된 코드를 클린 코드라고 합니다.

클린 코드와 비슷한 맥락으로'클린 아키텍처'의 중요성이 조금씩 대두되고 있습니다. ‘클린 코드'의 저자 로버트 마틴이 제안한 시스템 아키텍처로, 층층이 쌓여있는 구조가 아니기 때문에 의존성에서 벗어나 유지보수 및 확장이 용이하도록 설계된 아키텍처입니다.

클린 코드가 협업을 위해 필요한 것이라면, 클린 아키텍처는 왜 필요할까요? 바로 확장성 때문입니다. 서비스는 계속해서 업데이트가 되고 있죠. 자주 사용하는 카카오톡이나 배달의 민족 등의 앱/웹만 보더라도 계속해서 기능이 추가되고 있습니다. 카카오 개발자들이 모여 다음과 같은 질문에 답을 해본다고 가정해 봅시다.

“카카오톡 앱을 사용하는 사람들의 대부분이 카카오 지도 앱을 많이 사용하네요. 두 개의 앱을 통합해볼까요?”

카카오톡 앱의 아키텍처, 카카오 지도 앱의 아키텍처가 각각 의존성이 높게 설계되어 있다면 두 아키텍처를 통합하는 것이 쉽지 않습니다. 아키텍처부터 재구축해야 한다면 리소스가 많이 투여되어야 하거나 통합 자체가 되지 않을 수도 있습니다. 만약 의존성이 줄어든 클린 아키텍처로 설계되어있었다면 기능이 추가 및 서비스가 통합될 때마다 필요한 아키텍처만 뗐다 붙였다 하기 용이할 수 있습니다.

백엔드 개발자가 고려해야 하는 아키텍처

지금까지 아키텍처가 무엇인지 그리고 클린 아키텍처가 왜 중요한지 알아보았습니다. 마지막으로 백엔드 개발자가 아키텍처 설계에 대해 왜 공부해야 하는지 알아봅시다. 당연히 데이터의 흐름을 관리하고 로직을 짜는 백엔드 개발자에게 아키텍처를 효율적으로 설계할 수 있는 역량은 매우 중요합니다. 여러 기업의 채용 공고만 보더라도 알 수 있죠.

  • 오늘의 집 / Global Backend Developer
      - 클라우드 환경에서의 대용량 트래픽 아키텍처 설계, 개발 및 분산 컴퓨팅 솔루션 구현

    오늘의 집 / 커머스 Backend Developer
      - 클라우드 환경에서의 대용량 트래픽 아키텍처 설계, 개발 및 분산 컴퓨팅 솔루션 구현
      - (우대) 대용량 서비스 아키텍처 및 데이터 처리에 대한 경험이 있으신 분

    당근마켓 / 사업 부문 서버 개발자
      - 대규모 트래픽 처리를 위한 애플리케이션 아키텍처 구성에 대한 관심이 있으신 분
      - (우대) 클린 아키텍처, DDD 등 프로젝트 구조와 설계에 관심이 있으신 분

    배달의 민족 / 배민 플랫폼실 서버 개발자
      - (우대) Microservices 아키텍처 기반의 시스템 개발 경험이 있으신 분

    네이버페이 / 금융플랫폼 Back End
      - 프로그램 설계, 디버깅, 자료구조 및 알고리즘의 이해가 가능하신 분
      - (우대) MSA (Micro Service Architecture)로 전환 개발한 경험을 보유하신 분
      - (우대) 비동기, 메시지 아키텍처 개발 경험을 보유하신 분

따라서, 프로젝트를 진행하실 때 클린 아키텍처 설계를 신경써서 진행해주시면 분명 본인만의 강점으로 가져가실 수 있습니다. 백엔드 개발에서 클린 아키텍처의 중요성을 더 알고 싶다면 클린 코드의 저자 로버트 C. 마틴이 쓴 책을 읽어보시는 것을 추천 드립니다.

백엔드 아키텍처_클린 아키텍처

책 <클린 아키텍처>, 로버트 C. 마틴

마치며,

백엔드 아키텍처 잘 살펴보았나요?
백엔드 개발자에게 중요한 백엔드 아키텍처를 고려해 개발자로 취업하고 싶다면 백엔드 스쿨에서 시작해 보세요. 기본기부터 쌓고, 프론트엔드 협업 프로젝트까지! 백엔드 개발자 취업에 필요한 모든 것을 6개월 과정으로 만나볼 수 있습니다. 백엔드 스쿨에서 네카라쿠배 현직자의 멘토링으로 취업을 완성하세요.

추천 컨텐츠