개발/백앤드
# [백엔드] 백엔드 대하여 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. 백엔드 개발자가 수행하는 업무 순서
- 과제 할당 및 분석 : 구체적 개발 관점 검토
ex) 친구 초대 이벤트 -> 친구?, 초대? 무슨 의미 어떤 조건, 이벤트를 위해 어떤 데이터를 저장할지 등등..+ 제공할 성능과 사용할 기술 검토 - 개발-> 테스트 -> 분석 : 완성도를 높이는 과정
- QA(Quality Assurance): 성능결함, 로직오류 검증
- 배포 : 롤링배포(서버 돌아가며), 블루그린(로드밸런서 설정변경), 카나리(문제없는 서버 배포비율 늘림)
- 도커 사용 시 앤서블(Ansible)로 롤링 배포 구현 가능.
- 유지 보수
- 개발부터 배포, 모니터링 무한 반복 (CICD) : DevOps 개발과 운영 합성함.
- DevOps 클라우드 마이그래이션, 피크타임 트래픽 처리, 데이터 파이프라인 작성, 모니터링 시스템 구축
- 네트워크 보안, 코드를 통한 인프라 관리
- 문서 관리 및 유지보수 인계작업 등
3. 백엔드 아키텍처
🤔 아키텍트란?
✅ 아키텍트는 개발을 위한 총체적, 종합적 기획이다.
💁♂️ 아키텍처는 계층형, 이벤트기반, 마이크로 서비스의 구조로 분류할 수 있습니다.
1) 계층형(layerd architecture) :
- 가장단순, 직관적, 논리적 분리, 소규모 애플리케이션에서 채택
- 프레젠테이션, 비즈니스로직, 데이터 저장 계층 수행
- 의존성이 단방향임.
2) 이벤트 기반(event-driven architecture):
- 이벤트 상태 변화에 대응하는 설계 패턴
- 프로듀서(이벤트 발생), 중개인(이벤트 전달), 컨슈머(이벤트 받음)
- 모든 요청 비동기 처리, 확장성, 컴포넌트 간 의존성 줄임.
- 수평적 확장(Scale out)용이(장비 추가로 처리량 증대)
- 에러 발생 시 이벤트 새로 생성, 무시, 에러처리 중 고려
3) 마이크로서비스 (microservices architecture):
- 여러 개의 작은 서비스로 나누어 관리
- 독립적 개발, 배포, 운영, 구조적 분리
- 각 서비스의 독립적 업데이트 및 스케일링 가능
- 간결한 전체 구조, 대규모 시스템 구축에 유용, 확장성 좋음, 업그레이드 용이,
- 도메인 주도 설계에 영향을 받음.
- 도메인: 사용자가 요구하는 문제 분야 내에서의 상황 ex) 계정관리, 상품관리 등.
- 유지보수에 비용 많이 들어감.
백엔드의 정의와 백엔드 프로세스 그리고 백엔드 설계에 대하여 알아보았습니다.
📌 참고 1. 도서, Node.js백엔드 개발자 되기