Web/SrpingBoot

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

나는나는용 2023. 8. 17. 01:13
728x90

서버 & 클라이언트

클라이언트

서버에게 요청하는 프로그램

 

ex. 웹 브라우저 : 주소 입력 후 Enter 키를 눌러 정보를 요청함 ( 화면 확인 )

                                                      "서버에 요청한다"

서버

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

 

데이터베이스

데이터베이스 

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

 

ex. MySQL, 오라클, 포스트그레SQL ···

▶ 데이터베이스가 아닌, 데이터베이스를 관리하기 위한 '시스템의 이름'

 

데이터베이스의 종류

NoSQL, NewSQL, RDB

 

RDB ( Relational Database ) : 관계형 데이터베이스

데이버베이스를 행 · 열로 이루어진 테이블로 관리함.

 

기본키( primary key) 를 사용해 각 행을 식별 / 각 테이블 간 관계를 삭제함.

 

ex. 오라클, MySQL, SQL서버, 포스트그레SQL

 

RDB가 아닌 데이터베이스는 NoSQL, NewSQL로 구분한다.

 

SQL ( Structured Query Language )

쿼리. 데이터 검색하는 언어.

 

ANSI 표준 SQL ( 각 RDE별로 방언이 있음)

 

RDB 전용이라고 보기는 힘듦.

 

NoSQL에 SQL 엔진을 도입. ▶ 데이터 질의 편리.

 

NoSQL

"SQL 안써요~"에서 "Not Only SQL"의 의미로 변화.

 

RDB 장단점

장점 : '데이터 저장, 질의, 수정, 삭제' 용이.

 

단점 : 성능 향상이 어려움.

    DB의 성능을 높이려면 :

     - 스케일업 ( 머신 성능을 좋게 함 ) → 장비를 업그레이드 하면 됨.

     - 스케일 아웃 ( 머신 여러대로 분리) DB 분산하면 되는데, 이 때 트랜잭션 쓰면 성능 저하

 

RDB의 단점 개선을 위해 NoSQL이 등장함.

 

데이터모델링을 어떻게 하느냐에 따라 다이나모디비, 카우치베이스, 몽고디비 등 다양한 NoSQL DB 존재.

 

IP와 포트

IP

인터넷에서 컴퓨터 · 기기 들이 서로를 식별하고 통신하기 위한 주소.

 

IP를 통해 서버를 찾을 수 있음.

               IP뿐만 아니라 포트까지 알아야 서버를 이용할 수 있음.

포트

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

 

+)

IP : 포트 = 현대백화점 천호점 : 나이키 매장

 

ex.          https://  www.naver.com

서버의 443번 포트  아이피 쉽게 알아보기 위한 이름표

 

라이브러리 & 프레임워크

라이브러리

애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 '코드의 모음'

 

책들의 모음 : SW 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일종의 도구 역할.

 

코드 직접 작성하지 않아도 됨 → 원하는 기능 빠르게 개발 가능.

 

독립적 : 끼리끼리 영향을 크게 주지 않음.

 

개발 과정에서 필요한 기능을 구현하기 위해 사용함.

 

프레임워크

SW 개발 수월하게 하기 위한 'SW 개발환경 틀' 제공.

 

정해진 틀에서 개발해야 하지만, 개발 효율이 굉장히 높음.

 

애플리케이션 개발 시 전체적인 구조 잡기 위해 사용함.

 

백엔드 개발자의 업무

서버 측 애플리케이션을 개발.

 

주 과정

과제 할당 → 과제 분석 → 개발 → 테스트(리뷰) → QA · 버그수정 → 배포 → 유지보수

개발 : 기능 개발, 버그 수정, 깃헙 등 통해 동료의 리뷰 받고 반영하여 완성도를 높임.

 

테스트( 리뷰 ) : '개발용 코드'보다 '테스트' 먼저 작성하는 '테스트 주도 개발'기법 사용하기도 함

 

배포 : 여러 방법이 있음.

- 롤링 배포 : 특정 개수의 서버들을 돌아가며 배포.

- 블루그린 배포 : 똑같은 서버 인스턴스를 띄우고 로드 밸런서 설정을 바꿔버림

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

등등...

 

배포 → 유지보수 : 쉽고 안전하게 배포, 문제 시 이전으로 돌리는 작업이 가능하게끔 준비해야 함.

 

개발 ~ 유지보수 : 무한 반복.

'빌드~배포' 과정 자동화 가능

- CI : Continuous Integration : 지속적인 통합.

        새로운 변경 사항 → 정기적 빌드 · 테스트 → 저장소에 통합

        저장소에 코드가 반영되는 것.

- CD : Continuous Delivery & Continuous Deployment : 지속적인 배포

          실제 프로덕션 환경까지 변경된 코드가 반영되는 것.

 

백엔드 프로그래밍 언어

파이썬 :

데이터분야 · 서버 개발 에 많이 사용됨.

대표 프레임워크 : 플라스크, 장고, FastAPI

 

C++ :

성능이 중요한 게임 서버 개발

 

Java :

서버 개발.

대표 프레임워크 : 스프링, 스프링부트

 

C# :

미국에서 많이 사용.

마이크로소프트 계열 SW와 호환성이 좋음.

대표 프레임워크 : 닷넷

 

JavaScript :

frontend 와 backend 모두 많이 사용.

대표 프레임워크 : 익스프레스, NestJS

 

자바 애너테이션 @

자바로 작성한 코드에 추가하는 표식.

 

JDK 1.5버전부터 사용 가능.

 

주로 메타 데이터로 사용.

 

ex.

@Override : 선언된 메서드가 오버라이드 되었음 ( '메서드를 재정의: 부모클래스의 메서드를 자식클래스에서 다시 구현' 했음을 명시적으로 나타냄 )

@Deprecated : 더 이상 사용되지 않음.

@SuppressWarnings : 컴파일 경고를 무시함.

728x90