소프트웨어학부/스프링 부트 3 개발자 되기 자바 편

01장 자바 백엔드 개발자가 알아두면 좋은 지식

Mt.Hwang 2024. 5. 15. 15:48

 * 핵심 키워드
 1. 스프링
 2. 스프링 부트
 3. 클라이언트
 4. 서버
 5. 아이피
 6. 포트
 7. 라이브러리
 8. 프레임워크
 9. 데이터베이스
 10. 자바 애너테이션


 * 인터넷 서비스
서버와 클라이언트가 관계를 맺는 것

클라이언트 (웹 브라우저)는
서버에 다양한 요청을 하고

서버 (스프링 부트)는
요청받은 내용을 처리


 * 클라이언트  client
서버로 요청하는 프로그램
ex) 웹 브라우저

정보를 요청하는 행위가
서버에 요청하는 것


 * 서버  server
클라이언트의 요청을 받아
처리하는 주체


 * 데이터베이스  database
데이터를 한 군데 모아놓고
여러 사람이 사용할 목적으로 관리하는 데이터 저장소

MySQL, 오라클, 포스트 SQL 등은
데이터베이스가 아니라
데이터베이스를 관리하기 위한 시스템의 이름

 데이터베이스의 동작원리
클라이언트 (웹 브라우저)의 요청 (SQL) -> DBMS가 데이터베이스 관리
-> DBMS의 응답 (데이터)
 1. 클라이언트의 요청
 2. DBMS의 데이터베이스 관리
 3. DBMS의 응답


 * RDB  Relational Database
관계형 데이터베이스

데이터를 행과 열로 이루어진 테이블로 관리

기본 키를 이용해
각 행을 식별


 * SQL  Structured Query Language
쿼리 (데이터)를 검색하는 언어

데이터 질의를 위한 언어


 * NoSQL
최근에는 Not Only SQL의 의미로 사용

데이터베이스의 성능을 높이기 위해서는
 1. 스케일 업
 2. 스케일 아웃
이 필요

 스케일 업
머신의 성능을 좋게 하는 것
장비를 업그레이드하면 된다

 스케일 아웃
머신을 여러 대로 분리
데이터베이스를 분산시킨다
분산시킬 때 트랜잭션을 사용하면 성능이 떨어짐
ㄴ 이 문제를 해결하기 위해 등장한 것이 NoSQL


 * 아이피  IP
인터넷에서 컴퓨터를 비롯한 기기들이
서로를 식별하고 통신하기 위한 주소

서버를 사용하기 위해서는
아이피 뿐만 아니라 포트도 알아야 한다


 * 포트
서버에서 운용되고 있는
서비스를 구분하기 위한 번호

아이피가 건물이라면
포트는 호수 or 구역

아이피가 백화점이라면
포트는 매장


http://www.naver.com
ㄴ http://는 서버의 443번 포트를 사용하기 위한 입력
ㄴ http://www.naver.com은 아이피를 쉽게 알아보기 위해 이름표를 붙인 것

스프링 서버의 포트는 8080 포트


 * 라이브러리  library
편리한 기능을 구현하는 코드의 모음


 * 프레임워크  framework
개발을 수월하게 하기 위한
소프트웨어 개발 환경

일하기 위한 틀을 제공하는 것

 장점
개발 효율이 높다

 단점
정해진 틀에서 개발해야 한다

프레임워크는 개발할 때 전체적인 구조를 잡기 위해 사용하는 것
라이브러리는 필요한 기능을 구현하기 위해 사용하는 것


 * 백엔드 개발자
서버 측 애플리케이션을 개발

개발 순서는
 1. 과제 할당
 2. 과제 분석
 3. 개발
 4. 테스트 (리뷰)
 5. QA 및 버그 수정
 6. 배포
 7. 유지보수

배포 종류는
 1. 롤링 배포
 2. 블루 그린 배포
 3. 카나리 배포

 롤핑 배포
특정 개수의 서버들을 돌아가며 배포

 블루 그린 배포
똑같은 서버 인스턴스를 띄우고
로드 밸런서 설정을 바꾸는 것

 카나리 배포
전체 서버의 특정 비율만큼 배포해보고
문제가 없는 경우 점점 배포를 늘려가는 것

 CI  Continuous Integration
지속적인 통합
코드 변경 사항이 정기적으로 저장소에 통합되는 것
즉, 저장소에 코드가 반영되는 것

 CD  Continuous Delivery & Continuous Deployment
지속적인 배포
즉, 실제 프로덕션 환경까지 변경된 코드가 반영되는 것


 * 로드 밸런서
둘 이상의 컴퓨터 자원들에게 작업을 나누는 것

여러 서버가 분산 처리하는 것

서버에 가해지는 부하를 분산해주는 장치 or 기술
이 때 로드는 부하이고
밸런싱은 분산이다

한 대의 서버로 부하가 집중되지 않도록
트랙픽을 관리해
각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 함


deploy
배포하다
전개하다

deployment
배포
전개


 * 로컬 개발 환경 / 프로덕션 환경
 로컬 개발 환경
개발자가 자신의 컴퓨터에서
코드를 작성하고 테스트하는 환경
개발과 테스트가 빠르고 편리하다
but 실제 운영 환경에서의 모든 문제를 예측하고 대비하기 어렵다

 프로덕션 환경
실제 사용자가 애플리케이션을 사용하는 환경
애플리케이션의 최종 목적지
성능, 보안, 안정성이 가장 중요


 * 자바 애너테이션  java annotation
자바로 작성한 코드에 추가하는 표식

@ 기호 사용

메타 데이터로 주로 사용

 @Override
선언된 메서드가 오버라이드 되었음

 @Deprecated
더 이상 사용되지 안ㄶ음

 @SuppressWarnings
컴파일 경고를 무시함

명시적으로 나타낼 수 있는 것

주석처럼 프로그램에 영향을 미치지 않으면서
유용한 정보를 제공하는 것