개발/백앤드

# [백엔드] 백엔드 대하여 01 (업무순서, 설계방식)

ForrestPark 2025. 1. 2. 08:43

백엔드를 개발하기 위해서 알아야 할 것은 무엇인지, 백엔드 업무 프로세스, 설계방식에 대해 알아보았습니다.


1. 백엔드에 대하여

🤔 백엔드란?

백엔드는 요청에 맞게 데이터를 처리하여 응답 하는 것 이다.

🤔 백엔드 개발할 때 알아야 할 지식은?

서버, 운영체제, 네트워크(http, tcp/udp, 라우팅, OSI, 요청, 응답, DNS)를 알아야 한다.

🤔 서버란?

서버란 요청을 받아 처리하고 결과물을 응답하여 보내는 주체이다.

이미지, 파일, 데이터처리 무엇을 처리할 것인지로 어떤 종류의 서버인지 분류 할 수 있다.

  1) WAS(Web application server) :

   동적 데이터 처리서버, 웹서버뒤에서 응답 제공 (ex. 톰캣, 웹스피어, JEUS, IIS)

  2) 웹서버:

   웹페이지, 파일, 이미지 등 정적 파일 서비스 (ex. Apache HTTP, Nginx, IIS)

정적 파일 처리는 Nginx 같은 웹서버가 훨씬 잘한다. WAS는 스플이 이나 장고 같은 웹 프레임워크를 실행시켜 요청받은 데이터를 처리하는 역할을 잘한다.

🤔 백엔드 네트워크 구성?

클라이언트가 DNS 서버로 ip를 물어보고 DNS서버 가 알려준 IP로 요청을 보내면 웹서버가 응답을 보낸다.

  • 캐시 : 디스크가 아니라 메모리에 데이터 저장 읽는 속도 높이는 방식
  • 프레임워크 :
    개발에 필요한 예외 처리, 데이터베이스 연결, 외부 라이브러리 연동
    코드 구조 일관성을 줌. 개발자가 비즈니스 로직 개발에 집중 가능.

2. 백엔드 개발자가 수행하는 업무 순서

  1. 과제 할당 및 분석 : 구체적 개발 관점 검토
    ex) 친구 초대 이벤트 -> 친구?, 초대? 무슨 의미 어떤 조건, 이벤트를 위해 어떤 데이터를 저장할지 등등..+ 제공할 성능과 사용할 기술 검토
  2. 개발-> 테스트 -> 분석 : 완성도를 높이는 과정
  3. QA(Quality Assurance): 성능결함, 로직오류 검증
  4. 배포 : 롤링배포(서버 돌아가며), 블루그린(로드밸런서 설정변경), 카나리(문제없는 서버 배포비율 늘림)
  • 도커 사용 시 앤서블(Ansible)로 롤링 배포 구현 가능.
  1. 유지 보수
  • 개발부터 배포, 모니터링 무한 반복 (CICD) : DevOps 개발과 운영 합성함.
  • DevOps 클라우드 마이그래이션, 피크타임 트래픽 처리, 데이터 파이프라인 작성, 모니터링 시스템 구축
  • 네트워크 보안, 코드를 통한 인프라 관리
  • 문서 관리 및 유지보수 인계작업 등

3. 백엔드 아키텍처

🤔 아키텍트란?

아키텍트는 개발을 위한 총체적, 종합적 기획이다.

💁‍♂️ 아키텍처는 계층형, 이벤트기반, 마이크로 서비스의 구조로 분류할 수 있습니다.

1) 계층형(layerd architecture) :

  • 가장단순, 직관적, 논리적 분리, 소규모 애플리케이션에서 채택
  • 프레젠테이션, 비즈니스로직, 데이터 저장 계층 수행
  • 의존성이 단방향임.

2) 이벤트 기반(event-driven architecture):

  • 이벤트 상태 변화에 대응하는 설계 패턴
  • 프로듀서(이벤트 발생), 중개인(이벤트 전달), 컨슈머(이벤트 받음)
  • 모든 요청 비동기 처리, 확장성, 컴포넌트 간 의존성 줄임.
  • 수평적 확장(Scale out)용이(장비 추가로 처리량 증대)
  • 에러 발생 시 이벤트 새로 생성, 무시, 에러처리 중 고려

3) 마이크로서비스 (microservices architecture):

  • 여러 개의 작은 서비스로 나누어 관리
  • 독립적 개발, 배포, 운영, 구조적 분리
  • 각 서비스의 독립적 업데이트 및 스케일링 가능
  • 간결한 전체 구조, 대규모 시스템 구축에 유용, 확장성 좋음, 업그레이드 용이,
  • 도메인 주도 설계에 영향을 받음.
  • 도메인: 사용자가 요구하는 문제 분야 내에서의 상황 ex) 계정관리, 상품관리 등.
  • 유지보수에 비용 많이 들어감.

백엔드의 정의와 백엔드 프로세스 그리고 백엔드 설계에 대하여 알아보았습니다.

📌 참고 1. 도서, Node.js백엔드 개발자 되기