본문 바로가기

SpringBoot

[스프링 부트 3 백엔드 개발자 되기] ch 1. 자바 백엔드 개발자가 알아두면 좋은 지식

 

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)는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다, 그래서 아이피를 알면 서버를 찾을 수 있다. 하지만 서버를 이용하려면 포트까지 알아야 한다. 

- 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다. 

 

ex) https://www.naver.com 

 

네이버

네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요

www.naver.com

 

- '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");
    }
}