본문 바로가기
기술 트렌드, 생각 정리 & 회고/Engineering trends

백엔드 엔지니어링 : Back-end(Server-side) Engineering

by TwoJun 2023. 5. 1.

2023.03.07(Tue)

 

백엔드 엔지니어링에 대한 평소 가지고 있었던 생각, 공부했던 내용들을 포스팅으로 정리해 보고자 합니다.

 

 

 

 

 

1. 백엔드 엔지니어링(Back-end Engineering)이란 무엇인가?

프론트엔드(Client-side) / 백엔드(Server-side)

 

- 웹 개발 분야 중 하나로써 간단히 정의해 보자면, 도메인(Domain)을 위해 서버의 데이터베이스 및 비즈니스 로직, 이들을 제공하기 위한 API를 설계하고 개발, 운영하는 전반적인 기술을 의미합니다. 사람마다 조금씩 다르게 정의할 수도 있지만 대부분 아래와 정의해 주시는 분들을 많이 봤습니다.

 

(1) 웹 또는 앱에서 사용자가 시각적으로 볼 수 없는 서버 사이드, 데이터베이스를 관리하는 전반적인 기술

 

(2) 사용자로부터 들어온 요청에 대해 이에 맞는 응답을 반환할 수 있는 비즈니스 로직을 개발하는 것

 

(3) 도메인에 대한 시스템 컴포넌트, API 설계, 라이브러리 생성, 데이터베이스 관리 기술 

 

(4) 사용자들이 서비스를 이용하며 발생하는 데이터들을 구조화된 틀(DB)에 담고, 사용자의 요청에 따라 적절한 데이터를 반환할 수 있도록 하는 DB Table, ERD(Entity Relationship Diagram)를 설계

 

(5) 프론트엔드와 백엔드는 상호 간의 통신 수단이 존재하며 이를 API(Application Programming Interface)라고 함. 두 개체 간의 효율적인 통신을 위한 API 설계가 필요

 

 

- 이처럼 백엔드 개발자의 업무를 보면 특정 서비스를 개발할 때 시스템을 안정적이고 효율적으로 설계해야 한다는 것을 알 수 있습니다.

 

 

 

 

 

2. API (Application Programming Interface)

Reference (카카오엔터프라이즈 Tech Blog) : https://tech.kakaoenterprise.com/127

 

(1) 두 시스템 간의 서로 통신이 가능한 인터페이스를 의미하며 웹에서의 API는 HTTP(HyperText Transfer Protocol)를 기반으로 유저가 항상 보게 되는 프론트엔드(Client-side) 영역과 유저의 요청을 실시간으로 처리해서 응답을 던져줘야 하는 백엔드(Server-side) 영역 간의 통신 체계로 볼 수 있습니다.

 

 

 

 

 

3. ERD (Entity Relationship Diagram)

Reference : https://www.visual-paradigm.com/guide/data-modeling/what-is-entity-relationship-diagram/

 

(1) 직역하면 개체 관계 모델이며 특정 도메인에서 사용할 데이터베이스의 체계를 모델링한 것을 의미합니다.

 

 

 

 

 

4. 도메인(Domain)

Reference (도메인 주도 설계 - Domain Driven Design, DDD) : https://gowoonsori.com/etc/developing-ms-starting-with-ddd/

 

(1) 백엔드 엔지니어링에서 자주 등장하는 용어이며 일반적으로 영역, 분야라는 뜻을 가지지만 백엔드 개발에서는 현실 세계의 요구사항을 바탕으로 해결되어야 하는 문제의 영역, 핵심 비즈니스 요구 사항을 의미하게 됩니다.

 

(2) 예시

- 회원 도메인 설계 : 회원은 가입하고 로그인할 수 있다, 회원만의 각자 등급(일반 회원, VIP 회원)을 보유할 수 있다. (...) 등

 

- 주문과 할인 도메인 설계 : 회원은 상품을 주문할 수 있다, 상품을 주문할 때 회원 등급에 따라 할인 적용이 된다. (...) 등

 

 

 

 

 

5. 비즈니스 로직 (Business Logic)

OrderService 인터페이스로부터 주문 서비스(OrderServiceImpl)를 구현하기 위한 Java 클래스 코드의 예시

 

(1) 주어진 문제 및 요구사항을 해결하기 위한 코드 로직입니다.

 

(2) 예시 : 회원 가입 Form을 통한 가입 처리 

- 회원 가입 과정에서 아이디 중복 검사, 비밀번호 재확인 등 사용자가 확인해줘야 할 사항들이 존재하는데 이러한 일련의 과정들이 매끄럽게 진행될 수 있도록 요청에 맞는 코드가 미리 구성되어 있어야 사용자가 가입 서비스를 이용할 수 있게 됩니다. 이처럼 비즈니스 로직은 문제 상황을 해결하기 위한 효율적인 코드로 볼 수 있습니다.

 

 

 

 

 

6. 데이터베이스 (Database, DB)

Reference : https://brunch.co.kr/@dan-kim/12

 

(1) 위의 백엔드의 정의에서 유저가 서비스를 이용하며 발생하는 데이터를 담는 틀이라는 내용이 잠시 언급됩니다.

 

(2) 말 그대로 데이터베이스는 어떤 구조화된, 정형화된 형식을 가지고 데이터를 관리할 수 있는 체계로 볼 수 있습니다.

 

(3) 다수의 사용자가 동시에 요청을 보내는 트래픽 부하가 큰 서버, 비즈니스 로직이 방대한 서비스일수록 각 사용자들의 요청에 따라 적절한 데이터를 제공하기 위해 안정적이고 효율적인 데이터베이스 설계가 반드시 필요합니다. 

 

 

 

 

 

- 개인적으로 공부했던 내용을 정리한 글입니다.

- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.

댓글