1. 서버와 클라이언트
- 클라이언트(client)는 서버로 요청하는 프로그램을 모두 일컬어 말한다. 서버(server)는 클라이언트의 요청을 받아 처리하는 주체이다.
2. 데이터베이스
- 데이터베이스(Database)는 여러 사람이 데이터를 한 군데 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소이다.
- 클라이언트에서 SQL, 즉 데이터베이스를 조작하기 위한 언어로 데이터베이스 관리 시스템에 데이터를 요청하면 데이터베이스 관리 시스템은 데이터베이스에서 데이터를 꺼내 응답한다.
RDB
- Relational Database의 약자로 관계형 데이터베이스라는 뜻이다.
- RDB가 아닌 데이터베이스를 NoSQL 또는 NewSQL로 구분한다.
- 관계형 데이터베이스는 데이터를 행(row)과 열(column)로 이루어진 테이블로 관리하며, 기본키(primary key)를 사용해 각 행을 식별한다. 또한 각 테이블 간의 관계를 지을 수 있다.
SQL
- Structured Query Language의 약자로 쿼리, 즉 데이터 검색을 하는 언어.
NoSQL
- Not Only SQL
- RDB는 데이터 저장, 질의, 수정, 삭제가 용이하지만 반면에 성능을 올리는 게 쉽지 않다.
- 데이터베이스의 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업 또는 머신을 여러대로 분리하는 스케일 아웃이라는 것이 필요하다. 그리고 이때 트랜잭션을 사용하면 성능이 떨어지게 된다.
- RDB의 이러한 문제들을 해결하기 위해 NoSQL이 등장하였다.
- NoSQL에는 데이터 모델링을 어떻게 하느냐에 따라 다이나모디비, 카우치베이스, 몽고디비와 같은 다양한 NoSQL 데이터베이스들이 있다.
3. 아이피와 포트
- 아이피(IP)는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다, 그래서 아이피를 알면 서버를 찾을 수 있다. 하지만 서버를 이용하려면 포트까지 알아야 한다.
- 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다.
- 'www.naver.com' 와 같은 주소는 아이피를 쉽게 알아보기 위해 이름표를 붙인 것이고, 그 앞에 있는 https://라는 것이 서버의 443번 포트를 사용하기 위한 입력이다.
4. 라이브러리와 프레임워크
- 라이브러리(library)는 애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음을 말한다.
- 프레임워크(framework)는 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경이다.
- 프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용하는 것이고, 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용하는 것이다.
5. 백엔드 개발자의 업무
배포와 유지보수
- QA가 완료되면 서버에 배포를 진행한다. 때에 따라서 여러 과재를 한 번에 병합해서 배포하거나, 새로운 기능이 추가될 때마다 배포한다.
배포 방법
롤링 배포 | 특정 개수의 서버들을 돌아가며 배포 |
블루 그린 배포 | 똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿈 |
카나리 배포 | 전체 서버의 특정 만큼 배포해보고 문제없는 경우 점점 배포를 늘려감 |
- 빌드부터 배포까지의 과정을 자동화할 수 있다. 이것을 두고 CI(Continuous Integeration) / CD(Continuous Delivery & Continuous Deployment)라고 한다.
CI
- 지속적인 통합
- 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 저장소에 통합되는 것
CD
- 지속적인 배포
- 실제 프로덕션 환경까지 변경된 코드가 반영되는 것
6. 자바 애너테이션
- 자바 애너테이션(Java annotation)은 자바로 작성한 코드에 추가하는 표식을 말한다.
- 애너테이션은 다양한 목적으로 사용하지만 보통 메타 데이터로 사용하는 경우가 가장 많다.
public class A extends B {
@Override //선언된 메서드가 오버라이드 되었음을 나타내는 애너테이션
public void print() {
System.out.println("Hello, World");
}
}
'SpringBoot' 카테고리의 다른 글
[스프링 부트 3 백엔드 개발자 되기] ch 3. 스프링 부트 3 구조 이해하기 (0) | 2024.07.11 |
---|---|
[스프링 부트 3 백엔드 개발자 되기] ch 2. 스프링 부트 3 시작하기 (0) | 2024.07.10 |
[스프링부트 3 백엔드 개발자 되기] ch 0. 개발환경 구축하기 (0) | 2024.07.10 |
[Do it] 3장 스프링 부트 고급 기능 익히기(6) (0) | 2024.01.25 |
[Do it] 3장 스프링 부트 고급 기능 익히기(5) (0) | 2024.01.24 |