충분히 쌓여가는
자바 백엔드 개발자가 알아두면 좋은 지식 본문
서버
클라이언트의 요청을 받아 처리하는 주체
클라이언트가 데이터를 요청했다면 데이터를, 단지 서버 내에서 처리만 해달라는 요청을 했다면 해당 요청만 처리
웹 브라우저에 주소를 입력하는 것은 데이터 요청에 해당함
클라이언트
서버로 요청하는 프로그램 모두
웹 브라우저가 대표적인 클라이언트 중 하나
데이터베이스
여러 사람이 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소
클라이언트에서 SQL, 즉 데이터베이스를 조작하기 위한 언어로 데이터베이스 관리 시스템에 데이터를 요청하면 데이터베이스 관리 시스템은 데이터베이스에서 데이터를 꺼내 응답함
MySQL, oracle, postgreSQL 등은 데이터베이스보다는 데이터베이스를 관리하기 위한 시스템이 좀 더 정확함
데이터베이스는 RDB, NoSQL, NewSQL 등 여러 종류 존재
RDB
Relational Database로 관계형 데이터베이스
RDB가 아닌 데이터베이스를 NoSQL, NewSQL로 구분함
관계형 데이터베이스는 데이터를 행(row)과 열(column)로 이루어진 테이블로 관리
기본키(primary key)를 사용하여 각 행을 식별하고 각 테이블 간에 관계를 지을 수 있음
SQL
Structured Query Language로 데이터 검색을 하는 언어
NoSQL
Not Only SQL
RDB는 데이터의 저장, 질의, 수정, 삭제가 용이하지만 성능을 올리는 것이 쉽지 않다
데이터베이스의 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업
또는 머신을 여러 대로 분리하는 스케일 아웃이라는 것이 필요
스케일 업은 장비를 업그레이드하면 되지만 스케일 아웃은 데이터베이스를 분산하고, 이때 트랜잭션을 사용하면 성능이 떨어지게 됨
RDB의 이러한 문제를 해결하기 위해 NoSQL이 등장
NoSQL에는 데이터 모델링을 어떻게 하느냐에 따라 DynamoDB, Couchbase, MongoDB와 같은 다양한 NoSQL 데이터베이스가 존재
IP
인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소
IP를 알면 서버를 찾을 수 있다
서버를 이용하려면 IP만 알아서는 안되고 Port도 알아야 함
PORT
IP가 서버를 찾기 위한 번호라면 Port는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호
HTTP(80), HTTPS(443), POP3(110), SMTP(25) ...
라이브러리
애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음
개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 도구 역할
복잡한 코드를 직접 작성하지 않아도 되므로 원하는 기능을 더 빠르게 개발할 수 있다
라이브러리는 독립적이므로 영항을 크게 주지 않는다
라이브러리는 개발하는 과정에서 필요한 기능을 구현하기 위해 사용
프레임워크
소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경
정해진 틀에서 개발해야 한다는 단점이 있지만 개발 효율은 높다는 장점
프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용
백엔드 개발자의 주된 업무
서버 측 애플리케이션을 개발하는 일
개발하면서 서버에 대한 지식과 프로그래밍 지식, 만든 프로그램을 배포하고 안전하게 서비스할 수 있게 하는 지식 활용
1. 과제 할당
2. 과제 분석
3. 개발
4. 테스트(리뷰)
5. QA 및 버그 수정
6. 배포
7. 유지보수
배포와 유지보수
특정 개수의 서버들을 돌아가며 배포하는 롤링 배포
똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바궈버리는 블루 그린 배포
전체 서버의 특정 비율만큼 배포해보고 문제 없는 경우 점점 배포를 늘려가는 카나리 배포
개발자는 코드의 개발부터 테스트, 배포, 모니터링까지 무한 반복을 함
여기서 빌드부터 배포까지의 과정을 자동화할 수 있다
=> CI/CD
CI/CD
Continuous Integration/Continuous Delivery&Continuous Deployment
CI는 지속적인 통합으로, 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 저장소에 통합되는 것
CD는 지속적인 배포
CI는 저장소에 코드가 반영되는 것, CD는 실제 프로덕션 환경까지 변경된 코드가 반영되는 것
자바 애너테이션
자바로 작성한 코드에 추가하는 표식
JDK 1.5 버전부터 사용 가능
애너테이션은 다양한 목적으로 사용하지만 보통 메타 데이터로 사용하는 경우가 많음
'Spring > Spring Boot' 카테고리의 다른 글
자동 구성, 스프링 부트 3와 자바 버전 (0) | 2023.12.19 |
---|---|
스프링 부트 스타터 (0) | 2023.12.19 |
AOP와 PSA (0) | 2023.12.19 |
스프링 컨테이너와 빈 (0) | 2023.12.19 |
IoC와 DI (0) | 2023.12.19 |