백엔드 (Backend):
웹 어플리케이션이나 소프트웨어의 서버 측 구성 요소
사용자에게 직접 보이지 않지만 앱의 핵심 로직을 처리하고 데이터를 관리한다.
1. 주요 기능:
- 데이터 처리 및 저장
- 비즈니스 로직 구현
- API 제공
- 보안 및 인증 관리
- 프론트엔드와의 통신
2. 주요 구성 요소:
a) 서버:
- 웹 서버 (예: Nginx, Apache) - 프론트엔드 서버
- 어플리케이션 서버 (예: Tomcat, Gunicorn) - 백엔드 서버. 웹 제공
- API 서버 - 데이터 통신, 즉 DB 접근 목적
b) 데이터베이스:
- 관계형 DB (MySQL, PostgreSQL 등등)
- NoSQL DB (MongoDB, Cassandra, Redis 등등)
- 벡터 DB (Elastic Search, Faiss, Milvus, Chroma DB, Pinecone 등등)
c) 프로그래밍 언어:
- Python, Java, JavaScript (Node.js), Ruby, PHP 등
d) 프레임워크:
- Django, Flask (Python)
- Spring (Java)
- Express.js (Node.js)
- Ruby on Rails (Ruby)
- Laravel (PHP)
3. API (Application Programming Interface):
- RESTful API - CRUD
- GraphQL
- SOAP
API란 클라이언트와 서버 간의 통신 규약
4. 클라우드 서비스 활용:
- AWS, Google Cloud, Azure 등
- 서버리스 아키텍처 (AWS Lambda)
5. 백엔드 아키텍처:
- Monolithic
- Microservices Architecure (MSA)
- Serverless
- 레이어트 아키텍처
- 클린 아키텍처
- 헥사고날 아키텍처
6. 보안 고려사항:
- 데이터 암호화 적용
- SQL 인젝션 방지
- CSRF (Cross-Site Request Forgery) 보호
- XSS (Cross-Site Scripting) 방지
- JWT, OAuth 2.0 등 토큰 기반 인증
- RBAC(Role-Based Access Control): 역할 기반 권한 관리
7. 성능 최적화:
- 데이터베이스 쿼리 최적화
- 데이터베이스 정규화와 비정규화
- 데이터베이스 인덱싱
- 데이터베이스 트랜잭션 관리
- 캐싱 (Redis)
- 로드 밸런싱 (Ngnix, HAProxy)
8. 버전 관리 및 배포:
- Git을 이용한 버전 관리
- CI/CD (지속적 통합/배포) 파이프라인 (Jenkins, Gihub Actions, Gitlab CI/CD)
- 컨테이너화 (Docker)
9. 테스팅:
- 단위 테스트: 함수 및 클래스 단위 테스트
- 통합 테스트: API 호출 및 DB 연동 테스트
- 부하 테스트: Locust, JMeter 등 활용
10. 모니터링 및 로깅:
- 서버 상태 모니터링
- 에러 로깅 및 분석 (Sentry)
- 성능 모니터링
11. 확장성:
- 수평적 확장 (서버 추가)
- 수직적 확장 (서버 성능 향상)
12. 비동기 처리:
- 메시지 큐 (RabbitMQ, Kafka)
- 백그라운드 작업 처리
13. 문서화:
- API 문서화 (Swagger)
- 코드 문서화
ChatGPT랑 Gemini한테 물어본걸 기반으로 실제로 맞는지 인터넷이랑 책 목차를 참조하면서 간단하게 정리해보았다.
AI의 파운데이션 모델만을 연구할게 아니라면 개발 특히 백엔드쪽 지식을 많이 쌓아아할 것 같아서 정리해보았다.
개발자 분들이나 회사 다니면서 알음알음 들었던 내용들이 제법 많아서 자세히는 모르지만 귀에 익숙한 용어들이 많다.
References:
https://soso-hyeon.tistory.com/81
https://live-jh.tistory.com/45
https://keeeeeepgoing.tistory.com/318
https://blog.appkr.dev/work-n-play/learn-n-think/ddd-hexagonal/
https://server-technology.tistory.com/434