Backend
home
📕

Java 벡엔드 개발자가 알아야 할 배경지식

생성 일시
2025/01/22 10:39
태그
Java
게시일
2025/01/22
최종 편집 일시
2025/02/09 13:26
클라이언트 - 서버로 요청하는 프로그램 모두를 일컬어 말함
웹 브라우저가 대표적인 클라이언트
서버 - 클라이언트의 요청을 받아 처리하는 주체
RDB (Relational Database)
관계형 데이터베이스
데이터를 행(row)과 열(column)로 이루어진 테이블로 관리
기본키(primary key)를 사용하여 각 행을 식별하며 각 테이블 간의 관계를 형성할 수 있음
NoSQL(Not Only SQL)
RDB는 데이터 저장, 질의, 수정, 삭제가 용이한 반면에 성능을 올리는 게 쉽지 않음. 데이터베이스 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업 또는 머신을 여러 대로 분리하는 스케일 아웃이라는 게 필요함. 스케일 업은 장비를 업그레이드 하면 되지만 스케일 아웃은 데이터베이스를 분산하는 방식인데 이때 트랜잭션을 사용하면 성능이 떨어지게 됨. RDB의 이러한 문제들을 해결하기 위해 NoSQL이 등장함. NoSQL에는 데이터 모델링을 어떻게 하느냐에 따라 DynamoDB, 카우치베이스, Redis, 몽고디비와 같은 다양한 NoSQL 데이터베이스들이 있음.
IP와 Port
IP: 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소
Port: 서버에서 운용되고 있는 서비스를 구분하기 위한 번호
쉽게 말해 IP가 백화점이라면 포트는 각자 다른 물건을 살 수 있는 매장이라고 상상하면 됨
라이브러리
애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드들의 모음
프로그래밍 세계에서는 책들의 모음이라고 이해하는 것이 좋음
개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일종의 도구 역할을 함
개발자에게 권한이 있음
독립적이므로 라이브러리끼리 영향을 크게 주지 않음
프레임워크
소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경
일하기 위한 틀을 제공 ⇒ 개발자는 그 틀에서 일을 해야 함 (정해진 틀에서 개발을 해야 함)
개발 효율이 굉장히 높음
프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용하는 것이고, 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용하는 것
배포와 유지보수
배포
특정 개수의 서버들을 돌아가며 배포하는 롤링 배포
똑같은 서버 인스턴스를 띄우고 로드밸런서 설정을 바꿔버리는 블루 그린 배포
전체 서버의 특정 비율만큼 배포해보고 문제없는 경우 점점 배포를 늘려가는 카나리 배포
CI/CD
CI: 지속적인 통합, 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 저장소에 통합되는 것 (저장소에 코드가 반영되는 것)
CD: 지속적인 배포, 실제 프로덕션 환경까지 변경된 코드가 반영되는 것
자바 애너테이션
자바 애너테이션은 자바로 작성한 코드에 추가하는 표식을 말
애너테이션 이름
설명
@Override
선언된 메서드가 오버라이드 되었음
@Deprecated
더 이상 사용 되지 않음
@SuppressWarnings
컴파일 경고를 무시함