JaPark Bug World
[SpringBoot] 자바 백엔드 개발자가 알아두면 좋은 지식 본문
1.1 서버와 클라이언트
클라이언트란?
서버로 요청하는 프로그램을 모두 뜻한다. 대표적으로 웹 브라우저가 그 중 하나이다. 주소창에 주소를 입력하고 엔터를 눌러 정보를 요청하는 행위를 '서버에 요청한다'고 할 수 있다.
서버란?
서버는 클라이언트의 요청을 받아 처리하는 주체이다. 클라이언트측에서 요청한 데이터를 주거나, 요청만 처리할 수도 있다.
1.2 데이터베이스
데이터베이스는 여러 사람이 사용할 목적으로 데이터를 한 군데에 모아놓고 관리하는 데이터 저장소이다. 대표적으로 MySQL, 오라클, postgreSQL 등이 있다. (근데 정확히는 이것들이 데이터베이스가 아니라고 한다.) 데이터 베이스를 관리하기 위한 시스템의 이름이다!
RDB란?
데이터베이스를 여러 가지로 구분할 수 있는데 RDB, NoSQL, NewSQL등 여러종류 중 가장 많이 사용하는 데이터베이스는 RDB라고 한다. RDB(Relational Database) 관계형 데이터베이스라고 한다. 관계형 데이터베이스는 데이터를 행과 열로 이루어진 테이블을 기본키를 사용해 각 행을 식별한다. 또한 각 테이블 간에 관계를 지을 수 있다.
SQL이란?
Structured Query Language의 약자로 말 그대로 쿼리, 데이터 검색을 하는 언어이다.
NoSQL이란?
Not Only SQL의 의미로 많이 사용된다. RDB는 데이터의 저장, 질의, 수정, 삭제가 용이하지만 성능을 올리는게 쉽지 않다. 머신의 성능을 높이려면 스케일업 또는 머신을 여러 대로 분리하는 스케일 아웃이란 작업이 필요한데, 스케일업은 장비를 업그레이드 하면 되지만 스케일 아웃은 데이터베이스 분산이 필요하다. 이 때 트랜잭션을 사용하면 성능이 떨어지게 된다. 이러한 문제를 해결하기 위해 등장.
1.3 아이피와 포트
아이피는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다. 아이피를 알면 서버를 찾을 수 있다. 하지만 서버를 이용하려면 아이피만 알아서는 안되고 포트까지 알아야 가능하다. 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다.
1.4 라이브러리와 프레임워크
라이브러리란?
애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음, 프로그래밍 세계에서의 라이브러리는 도서관이 보다는 책들의 모음이라고 이해하는 것이 더 좋다.
프레임워크란?
소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경. frame과 work의 합성어로 일하기 위한 틀을 제공하는 것이다. 정해진 틀에서 개발해야 한다는 단점이 있지만 개발효율이 굉장히 높다.
1.5 백엔드 개발자의 업무
백엔드 개발자의 주된 업무는 서버 측 애플리케이션을 개발하는 일이다.
- 1. 과제 할당
- 모든 일은 주어진 과제를 할당하며 시작
- 2. 과제 분석
- 어떠한 주제에 따라 어떤 조건이 필요하고 어떤 데이터들을 저장하는지를 결정하고 제공할 성능과 사용할 기술을 검토하고, 문제가 있다면 해결 방법도 면밀하게 분석하여 정리 필요하다.
- 3. 개발
- 기능을 개발하고, 버그를 수정하는 일
- 4. 테스트
- 코드가 제대로 동작하는지 테스트 진행
- 과제 분석 > 개발 > 테스트를 반복하며 완성도를 높힌다.
- 성능 한계, 코드 가독성, 내가 만든 클래스 및 함수를 다른 사람이 간편하게 사용할 수 있는지 등
- QA
- 개발과 테스트가 어느 정도 마무리 됐다면 애플리케이션의 품질을 높이기 위해 Quality assurance를 진행
- 배포와 유지보수
- QA가 완료되면 서버에 배포를 진행. 때에 따라서 여러 과제를 한번에 병합해서 배포하거나 새로운 기능이 추가될 때마다 배포
- 문제 발생 시 쉽게 이전 버전으로 돌리는 작업을 할 수 있도록 준비
- 특정 개수의 서버들을 돌아가며 배포하는 롤링 배포
- 똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿔버리는 블루 그린 배포
- 전체 서버의 특정 비율만큼 배포해보고 문제 없는 경우 점점 배포를 늘려가는 카나리 배포 등이 있다.
- 빌드부터 배포까지의 과정을 자동화 할 수 있으며 이것을 CI(Continuous Intergration), CD(Continuous Delivery & Continuous Deployment)라고 한다.
- 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 저장소에 통합되는 것을 의미
- CD는 지속적인 배포, CI는 저장소에 코드가 반영되는 것을 말하고 CD는 실제 프로덕션 환경까지 변경된 코드가 반영
1.6 백엔드 프로그래밍 언어
2023년 4월 기준으로 파이썬이 1위. 다음으로 C, Java, C++, C#, 비주얼 베이직, 자바스크립트 순서이다. 이 중에 백엔드에서 맣이 사용하는 언어는 파이썬, C++, Java, C#, 자바스크립트 이다. 파이썬은 데이터 분야에서 많이 사요하지만 서버 개발에도 많이 사용한다. 자바는 스프링, 스프링부트라는 프레임워크를 기반으로 많은 곳에서 서버 개발에 사용한다.
1.7 자바 애너테이션
자바 애너테이션은 자바로 작성한 코드에 추가하는 표식을 말한다. @ 기호를 사용하며 JDK1.5 버전 부터 사용이가능하다. 다양한 목적으로 사용하지만 보통은 메타 데이터로 사용하는경우가 가장 많다.
메타데이터란? 데이터에 관한 구조화된 데이터로 다른 데이터를 설명해 주는 데이터
자바의 대표적인 애너테이션
애너테이션 이름 | 설명 |
@Override | 선언된 메서드가 오버라이드 되었음 |
@Deprecated | 더 이상 사용되지 않음 |
@SuppressWarnings | 컴파일 경고를 무시함 |
스프링부트3 백엔드 개발자 되기: 자바 편 책(저자 신선영)을 참고하여 정리한 내용입니다.
'개발새발 > SpringBoot' 카테고리의 다른 글
[SpringBoot] 스프링부트3와 테스트 (0) | 2024.04.08 |
---|---|
[SpringBoot] 스프링부트3 구조 이해하기 (0) | 2024.04.08 |
[SpringBoot] 스프링부트3 코드 이해하기 (0) | 2024.04.08 |
[SpringBoot] 스프링부트3 둘러보기 (0) | 2024.04.08 |
[SpringBoot] 스프링부트3 시작하기 (0) | 2024.04.08 |