IT공부일기
article thumbnail

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

 

🔍 서버와 클라이언트

✔ 클라이언트란?

서버로 요청하는 프로그램 모두를 일컫는 말.

대표적으로 웹 브라우저가 있습니다.

예를 들면 주소를 입력하고 엔터를 눌러 해당 주소 사이트로 이동하는 것이 자연스러운 현상처럼 보이겠지만

엔터를 누른 것으로 서버에 정보를 요청했고 서버가 그 주소에 맞는 화면으로 응답을 하는 것이랍니다.

 

✔ 서버란?

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

클라이언트가 데이터를 요청했다면 데이터를 주고

서버 내에 처리만 해달라는 요청을 했다면 해당 요청만 처리하죠.

아까 했던 주소에 맞는 화면으로 응답하는 것 또한

'새로운 화면을 그리기 위한 데이터를 달라' 라는 데이터 요청에 해당합니다.


🔍 데이터베이스란?

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

데이터베이스를 관리하는 시스템에는 MySQL, 오라클(Oracle), 포스트그레SQL(PostgreSQL) 등이 있습니다.

 

데이터의 동작원리는 다음과 같습니다.

클라이언트에서 SQL, 즉 데이터베이스를 조작하기 위한 언어로 데이터베이스 관리 시스템에 데이터를 요청하면

데이터베이스 관리 시스템은 데이터베이스에서 데이터를 꺼내 응답합니다.

 

✔ RDB란?

Relational Database의 약자로, 관계형 데이터베이스.

데이터를 행(row)과 열(column)로 이루어진 테이블로 관리하며, 기본 키(primary key)를 사용해 각 행을 식별합니다.

각 테이블 간의 관계를 지을 수 있습니다.

대표적으로 오라클(Oracle), MySQL, SQL 서버, 포스트그레SQL(PostgreSQL)이 있습니다.

 

✔ SQL란?

Structured Query Language의 약자로, 데이터 검색 하는 언어.

 

✔ NoSQL란?

SQL을 안 쓴다는 의미이기도 하지만, 최근에는 Not Only SQL의미로 많이 사용됩니다.

 

RDB의 다음의 문제를 해결하기 위해 등장했습니다.

RDB는 데이터 저장, 질의, 수정, 삭제가 용이 but, 성능을 올리는게 쉽지 않습니다.

데이터베이스의 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업 또는 머신을 여러 대로 분리하는 스케일 아웃이라는 것이 필요합니다.

스케엘 업은 장비를 업그레이드하면 되지만 스케일 아웃은 데이터베이스를 분산하고, 이때 트랜잭션을 사용하면 성능이떨어집니다.

 

대표적으로 DynamoDB(다이나모디비) Couchbase(카우치베이스), Mongo(몽고디비)가 있습니다.


🔍 아이피와 포트

아이피IP : 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소입니다.

아이피를 알면 서버를 찾을 수 있습니다.

하지만 서버를 이용하려면 포트까지 알아야합니다.

 

아이피와 포트는 어디에 있을까요?

사실 웹 브라우저 주소에 이 둘 모두가 들어 있습니다.

 

www.naver.com와 같은 주소는 아이피를 쉽게 알아보기 위한 이름표이고

그 앞에 https://는 서버의 443번 포트를 사용하기 위한 입력입니다.

 

프롤로그_메인클래스에서 실행한 스프링 부트 서버는 몇 번 포트로 설정되어 있을까요?

기본값은 8080

로그를 자세히 보면 8080 포트를 사용하는 것을 볼 수 있습니다.

포트 번호는 언제든 변경할 수 있지만 지금 기본값은 8080 그대로 두겠습니다.


🔍 라이브러리와 프레임워크

✔ 라이브러리란?

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

개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일종의 도구 역할입니다.

복잡한 코드를 직접 작성하지 않아도 원하는 기능을 더 빠르게 개발할 수 있습니다.

라이브러리는 독립적이기 때문에 라이브러리끼리 영향을 크게 주지 않습니다.

 

✔ 프레임워크란?

소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경.

틀(frame) + 일하다(work)의 합성어로, 일하기 위한 틀을 제공합니다.

정해진 틀에서 개발해야 한다는 단점이 있지만 개발 효율은 굉장히 높다는 장점이 있습니다.

 

라이브러리와 프레임워크의 차이점은 사용목적에 있습니다.

라이브러리 : 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용

프레임워크 : 전체적인 구조를 잡기 위해 사용


🔍 백엔드 개발자 업무

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

조직마다 다르짐나 대개는

 

1. 과제 할당 : 개발 과제를 할당하며 시작

2. 과제 분석 : 제공할 성능과 사용할 기술 검토, 해결방안 등 여러 요소 고려함

3. 개발 : 기능 개발, 버그 수정이 대부분

4. 테스트(리뷰) : 로직상 문제, 성능 한계, 만든 코드의 가독성 등 여러 검토 및 테스트

(단위 테스트 작성하는 경우, 개발용 코드보다 테스트를 먼저 작성하는 테스트 주도 개발 기법 사용하기도 함)

 

-> 앞의 과정 반복하여 프로그램 완성도 높임

 

5. QA 및 버그 수정 : 애플리케이션 품질을 높이기 위해 QA(quality assurance) 신청함

6. 배포

7. 유지보수


🔍 자바 애너테이션

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

보통 @ 기호를 사용하며 JDK 1.5버전부터 사용할  수 있습니다.

보통은 메타 데이터로 사용하는 경우가 가장 많습니다.

 

대표적인 애너테이션으로는 다음과 같습니다.

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

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

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