왜 이걸 모르고 백엔드 개발을 시작했을까

sangyong park·2025년 4월 9일

1.1 서버와 클라이언트

인터넷 서비스는 보통 서버와 클라이언트가 관계를 맺는다. 그래서 이 둘의 관계를 잘 이해해야 한다.

보통 클라이언트와 서버의 관계는 다음과 같은 그림으로 설명한다.

클라이언트란?

클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말한다. 우리가 사용하는 프로그램인 웹 브라우저가 바로 대표적인 클라이언트 중 하나다. 우리의 웹 브라우저는 주소를 입력한 뒤 enter를 눌러 정보를 요청하는 행위를 “서버에 요청한다”고 한다. 그러면 서버는 그 주소에 맞는 화면으로 응답한다.

서버란?

서버는 클라이언트의 요청을 받아 처리하는 주체이다. 클라이언트가 데이터를 요청했다면 데이터를 주고, 단지 서버 내에서 처리만 해달라는 요청을 했다면 해당 요청만 처리할 수도 있다. 흔히 우리가 웹 브라우저에 주소를 입력하는 건 새로운 화면을 그리기 위한 데이터를 달라는 데이터 요청에 해당한다.

1.2 데이터베이스

데이터베이스는 여러 사람이 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소이다. 흔히 데이터베이스를 말할 때 MySQL, 오라클, postgreSQL 등을 얘기한다. 사실 엄밀히 말해 이것들은 데이터베이스가 아니다. 데이터베이스를 관리하기 위한 시스템의 이름이다. 다만 데이터베이스와 데이터베이스 시스템은 한 쌍으로 움직이므로 둘을 하나처럼 언급할 뿐이다. 데이터베이스의 동작 원리는 아래와 같다.

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

RDB란?

데이터베이스는 여러 가지로 구분할 수 있는데, RDB, NoSQL, NewSQL 등 여러 종류가 있다. 그중 가장 많이 사용하는 데이터베이스는 RDB이다. RDB는 Relational Database의 약자로 관계형 데이터베이스라는 뜻이다. RDB가 아닌 데이터베이스를 NoSQL 또는 NewSQL로 구분한다. 관계형 데이터베이스는 데이터를 행과 열로 이루어진 테이블로 관리하며, 기본키(primary key)를 사용해 각 행을 식별한다. 또한 각 테이블 간에 관계를 지을 수 있다. RDB에서 가장 유명한 데이터베이스들은 오라클, MySQL, SQL서버, postgreSQL이 있다.

SQL이란?

SQL은 Structured Query Language의 약자로 말그대로 쿼리, 즉, 데이터 검색을 하는 언어이다. SQL도 하나만 있는 것이 아니라 ANSI 표준 SQL만 공부해도 무방하다. SQL도 사실 데이터의 질의를 위한 언어이므로 RDB 전용이라고 보기는 힘들다. NoSQL에도 SQL 엔진을 도입해서 데이터를 조금 더 편하게 질의하도록 지원하는 경우가 많다.

NoSQL이란?

NoSQL의 뜻이 SQL을 안 쓴다는 의미로 사용되기도 하지만, 최근에는 Not Only SQL의 의미로 많이 사용한다. RDB는 데이터 저장, 질의, 수정, 삭제가 용이하지만 반면에 성능을 올리는게 쉽지 않다. 데이터베이스의 성능을 높이려면 머신의 성능을 좋게 하는 스케일 업 또는 머신을 여러 대로 분리하는 스케일 아웃이라는 것이 필요하다. 스케일 업은 장비를 업그레이드하면 되지만 스케일 아웃은 데이터베이스 분산이 필요하다. 그리고 이때 트랜잭션을 사용하면 성능이 떨어지게 된다. RDB의 이러한 문제들을 해결하기 위해 NoSQL이 등장했다. NoSQL에는 데이터 모델링을 어떻게 하느냐에 따라서 다이나모디비, 카우치베이스, 몽고디비와 같은 다양한 NoSQL 데이터베이스들이 있다.

1.3 아이피와 포트

아이피는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소이다. 그래서 아이피를 알면 서버를 찾을 수 있다. 하지만 서버를 이용하려면 아이피만 알아서는 안된다. 포트까지 알아야 한다. 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호이다. 쉽게 말해서 아이피가 백화점이라면 포트는 각자 다른 물건을 살 수 있는 매장이라고 생각하면 된다.

우리가 흔히 사용하는 웹 브라우저의 주소에는 사실 아이피와 포트가 들어 있다. www.naver.com과 같은 주소는 아이피를 쉽게 알아보기 위해 이름표를 붙인 것이고, 그 앞에 있는 https://라는 것이 서버의 443번 포트를 사용하기 위한 입력이다. 보통 기본 포트는 8080 포트를 사용한다.

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

라이브러리란?

라이브러리는 애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음을 말한다. 프로그래밍 세계에서의 라이브러리는 도서관이라는 의미보다는 책들의 모음이라고 이해하는 것이 더 좋다. 개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모을을 가져다 쓸 수 있는 일종의 도구 역할을 하는 것이다.

프레임워크란?

프레임워크는 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경이다. 프레임워크는 틀과 일하다의 합성어로, 일하기 위한 틀을 제공하는 것 이다. 그래서 개발자는 그 틀에서 일을 해야 한다. 프레임워크는 정해진 틀에서 개발해야 한다는 단점이 있찌만 개발 효율은 굉장히 높다는 장점이 있다.

정리해보면 라이브러리와 프레임워크는 개발자가 소프트웨어를 개발하기 위해 사용하는 도구이지만 사용 목적에 따라 차이가 있다. 프레임워크는 애플리케이션을 개발할 때 전체적인 구조를 잡기 위해 사용하는 것이고, 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용하는 것이다.

1.5 백엔드 개발자의 업무

백엔드 개발자의 주된 업무는 서버 측 애플리케이션을 개발하는 일이다. 개발하면서 서버에 대한 지식과 프로그래밍 지식, 만든 프로그램을 배포하고 안전하게 서비스할 수 있게 하는 지식을 활용한다. 백엔드 개발자의 업무가 조직마다 천차만별이지만 대게는 ① 과제 할당 → ② 과제 분석 → ③ 개발 → ④ 테스트(리뷰) → ⑤ QA 및 버그 수정 → ⑥ 배포 → ⑦ 유지보수 순서로 진행한다.

1.6 자바 애너테이션

자바 애너테이션은 자바로 작성한 코드에 추가하는 표식을 말한다. 보통 애너테이션은 @ 기호를 사용하며 JDK 1.5 버전부터 사용할 수 있다. 애너테이션은 다양한 목적으로 사용하지만 보통은 메타 데이터로 사용하는 경우가 가장 많다.

자바의 대표적인 애너테이션

profile
Dreams don't run away It is always myself who runs away.

0개의 댓글