백엔드란 무엇일까?
간단히 말해서, 프론트엔드가 손님이라면, 백엔드는 요리사이다.
이때, 손님과 요리사를 이어주는 역할을 하는 것이 서버이다.
조금 더 언어적인 측면에서 이야기를 하자면, 클라이언트에게 보여지는 화면을 html, css, js 로 설계하는 것이 프론트,
서버와 데이터베이스를 설계하고 조작하는 것이 백엔드다라고 나눌 수 있을 것 같다.
로그인을 예시로 들어 설명해 보자면, 로그인 정보를 클라이언트가 입력을 한다. 그럼 서버에서는 이 정보가 유효한 정보인지 판단을 한다. (형식에 맞지 않는 아이디나 비번이 입력되었다든지 등등의 검사를 한다.) 서버에서 유효한 정보라는 결단이 내려지면 서버는 이 데이터를 파싱(Parsing) 해서 데이터베이스로 보내게 된다. 여기서 parsing 이란, 어떤 데이터를 특정 패턴이나 순서로 추출해서 가공하는 것을 말한다. 쉽게 말해 데이터가 데베에 잘 들어갈 수 있게끔 정리하는 과정이다.
그럼 데이터베이스에서 이 유저에 대한 정보가 있는지 판단을 한다. 그리고 해당하는 정보를 찾아서 서버에 넘겨주면 서버는 그것을 다시 클라이언트에게 보내줌으로써 로그인을 할 수가 있게 되는 것이다!
자 그럼, 백엔드 엔지니어가 갖추어야 할 역량이 무엇인지 어느 정도 감이 잡힌다. 1. 데이터 베이스를 만들고, 통합하고, 관리할 수 있어야 한다. 2. 백엔드 프레임워크를 사용해서 서보쪽 소프트웨어를 빌드할 수 있어야 한다. (여기까지만 보면, 백엔드 자체가 서버와 데이터베이스를 다루는 것이니까 백엔드 개발자도 그와 관련된 일을 하는 것이라고 생각할 수 있다.) 여기에 추가적으로, 3. 아까 로그인 예시에서 봤듯이 이 데이터가 유효한지 클라이언트에서 서버로 데이터가 넘어오는 과정에서 유효성 검사를 해주어야 한다. 4. 프론트 정보를 백 로직과 연결할 줄 알아야 한다. (3, 4의 경우 프론트와 관련된 역할이라고 보면 된다.)
백엔드 기술과 관련된 기술들/ 소프트웨어로는 먼저, 데베 관련된 위와 같은 기술들과 서버쪽 언어에 해당하는 아래 언어들이 있다.
다만 내가 듣기로 한국에서는 서버 언어로는 자바가 압도적으로 많이 쓰이고 node > python 순이라고 알고 있다. 그러니 혹 한국에서 서버 개발자로 취업을 하고 싶다면 자바-스프링 or 자바=코틀린을 공부해 두기를 추천한다. (그러나 또 어디서 듣기로, 스프링의 많은 부분들이 노드와 장고에서 넘어온 것이기 때문에 시간이 많은 학생 개발자라면 다양한 프레임워크로 서버 개발에 도전해 보는 것이 나중에 도움이 된다고 한다.)
여기에 더해서 애플레이케이션 유지 보수를 쉽게 해주는 프레임워크들이 있다. 프레임워크는 간단히 말해서, 공통적으로 쓰일만한 애들을 모듈화해서 모아둔 것이다. 그래서 나중에 실력있는 개발자가 되면 이런 오픈소스에 자신이 만든 모듈을 업로드함으로써 오픈소스 컨트리뷰터가 될 수 있다. (여기서 또 tmi 를 덧붙이자면, 라이브러리와 프레임워크는 서로 굉장히 비슷해서 헷갈리기 쉬운데, 라이브러리는 폴더명, 파일명 등에 대한 규칙이 없고 사용이 자유로운 반면 프레임워크는 그런면에서 좀 더 깐깐한 애들이라고 알아두면 된다.)
자 그렇다면 어디서부터 어떻게 백엔드 공부를 시작해야할까?
1. 언어와 프레임워크 고르기 (개인적으로 프론트엔드를 먼저 공부해서 js 에 익숙해진 상태라면 node.js 와 express 의 조합을 추천한다. 짧은 시간 내에 플젝을 완성해야 한다면 파이썬-장고의 조합도 괜찮은 것 같다. 다만 시작부터 자바-스프링을 선택하는 것은 개인적으로 비추. 가장 어렵고 복잡한 프레임워크라고 정평이 나있기 때문이다.)
2. 어떻게 클라이언트로 컨텐츠를 넘겨주는지 그 방법에 대해 배우기. 사실 나도 백엔드 공부를 제대로 해 보는 것은 처음이라 이것과 3번의 차이를 잘 모르겠긴 하다. -> 이 부분은 커뮤니티에 물어보고 보충하겠다!
3. 클라이언트와 소통하기 위해 API 와 HTTP 배우기
4. 데이터베이스와의 연결 배우기
5. 사실 제일 중요한 부분이지 않을까 싶다. 무언가를 직접 만들어보기!!
++추가
이 분께서 너무 친절히 알려주셨다. 요점만 정리하자면, api 와 Http 의 경우 특수하게 클라이언트에서 서버에 요청을 보내는 경우고, 클라이언트와 소통하는 방법이 api 와 http 만 있는 것은 아니다. 그러니 2번의 경우 좀 더 제너럴한 것이고 3번의 경우 좀 더 extra 한 것이다. 라는 것! 오늘도 이렇게 deep 하게 배워 간다 :)
'Back-End' 카테고리의 다른 글
What is a Server? 서버란 무엇인가? (0) | 2022.08.23 |
---|
댓글