컴퓨터 관련 쪽에서 공부를 하며 여러 용어들을 들어왔지만
정확히 그 용어가 무엇을 의미하는지 잘 알기 어려웠다.
나는 항상 언어가 사고의 틀이라 생각해 왔기에 언어가 정확히 확립되지 않는다면,
내가 생각하고 있는 개념이 계속해서 혼동될 것이라고 여겨 이번 기회에 확실히 정리하고자 한다.
백엔드 엔지니어란?
백엔드 엔지니어는 서버, 데이터베이스, 애플리케이션의 로직을 처리하는 서버 사이드 코드를 개발하는 전문가이다.
사용자가 직접적으로 보거나 상호작용하지 않는 데이터 처리 및 저장, API 제공, 사용자 인증, 서버 로직 처리 등의 업무를 담당한다.
주요 역할
1. 서버 개발 : 서버 사이드 로직을 개발하고한다. 즉, 유저(클라이언트)의 요청을 처리하며 적절한 응답을 전송하도록 만든다.
2. 데이터 베이스 관리: 데이터의 구조를 설계하고, 데이터를 안전하게 저장, 검색, 업데이트 및 삭제할 수 있는 시스템을 구축한다.
3. API 개발: 프론트엔드와 다른 시스템이 서버와 통신할 수 있도록 API를 설계하고 개발한다.
(API에 대한 개념은 여기를 참고. 찾아본 설명들 중에 가장 쉽게 써져 있는 것 같다.)
4. 보안: 데이터 보호, 인증 및 권한 부여등의 보안조치 구현
5. 성능 최적화: 서버 응답시간을 단축하고, 효율적인 데이터 처리를 위해 시스템 성능 최적화 작업을 수행
6. 배포 및 유지보수: 애플리케이션을 서버에 배포하고, 지속적인 모니터링 및 업데이트를 통해 시스템을 유지보수한다.
프론트엔드 엔지니어란?
프론트엔드 엔지니어는 웹 애플리케이션의 사용자 인터페이스와 사용자 경험을 개발하는 (각각 UI, UX) 전문가이다.
사용자가 직접적으로 보고 상호작용하는 웹 페이지의 구조, 디자인, 동작을 구현한다.
사용자에게 시각적으로 매력적이고 반응이 빠른 웹 사이트를 제공하는 것을 주요 목표로 한다.
주요 역할
1. UI/UX 개발 : 사용자 친화적인 인터페이스를 설계하고 구현한다.
2. 웹 표준 및 접근성 준수 : 웹 표준을 준수하고, 모든 사용자가 접근할 수 있도록 웹 사이트의 접근성을 높인다. (SEO 검색 엔진 최적화 등)
3. 크로스 브라우징 호환성 : 다양한 브라우저와 디바이스에서 웹사이트가 일관되게 작동하도록 한다.
4. 성능 최적화 : 페이지 로딩 속도 개선, 사용자 인터랙션에 대한 응답 시간 최적화를 담당한다.
5. 동적 컨텐츠 관리 : Ajax, Fetch api 를 사용하여 서버로부터 데이터를 비동기적으로 불러오고, 페이지에 동적으로 콘텐츠를 표시한다.
(데이터를 비동기적으로 불러온다는 개념은 여기를 참고.)
호스팅이란 ?
먼저 웹 개발 과정에서 일반적으로 사용 되는 두 종류의 서버 환경에 대해 이해할 필요가 있다.
바로 로컬 서버와 원격 서버인데, 로컬 서버는 백엔드 엔지니어가 개인의 컴퓨터에서 설정되어 개발자 개인의 컴퓨터에서만 접근 가능한 서버를 말한다. 주로 개발 및 테스트 단계에서 사용되며 로컬 서버에서 실시간으로 코드 변경을 확인하고 애플리케이션을 테스트한다.
그러나 대부분 개인의 PC는 24시간 켜놓을 수 없고, 고성능, 고가용성, 보안 등에 적합한 PC가 아니기 때문에 원격 서버를 통해 관리한다. 이러한 원격 서버를 제공하고 어디서든 접근할 수 있도록 만드는 서비스를 바로 호스팅이라고 하며, 이러한 호스팅을 제공해주는 업체를 호스팅 업체라고 한다.
라우팅이란?
라우팅은 웹 애플리케이션 내에서 사용자의 요청을 특정 경로와 연결하는 매커니즘이다.
예를 들어 사용자가 /about 경로로 이동하려고 하면 라우팅은 어바웃 페이지를 보여주는 로직과 연결시킨다.
즉 사용자의 요청 경로를 애플리케이션의 특정 코드 블록이나 컴포넌트에 매핑 하는 것을 말한다.
이러한 라우팅에는 정적 라우팅과 동적 라우팅이 존재한다.
정적 라우팅은 URL과 그에 대응하는 리소스(HTML 페이지) 사이의 매핑이 고정되어 있다.
따라서 각 URL은 미리 정의된 특정 리소스로 직접 연결된다.
동적 라우팅은 URL의 일부가 변수로 사용되어서 같은 패턴의 여러 URL 요청을 하나의 라우팅 규칙으로 처리할 수 있게 된다.
예를 들어, 사용자 프로필 페이지의 URL이 /users/:userId 의 형태일 때, :userId 는 동적으로 변하는 부분이며 서로 다른 userId 값에 따라 다른 사용자의 프로필 페이지를 제공할 수 있다.
라우팅은 웹 앱의 구조를 정의하고 사용자가 특정 페이지나 기능에 어떻게 접근할 수 있는지를 결정한다.
배포란?
배포는 개발된 웹 사이트나 앱을 실제 사용자가 접근할 수 있는 환경 (서버) 에 올리는 과정을 말한다. 개발 중인 로컬 환경에서 작동하는 앱을 실제 인터넷에 연결된 서버에 올리고, 도메인 이름을 연결하고, 필요한 보안 설정을 적용하는 등의 작업이 포함된다. 배포를 통해 개발된 앱은 실제 사용자에게 공개 되며, 인터넷을 통해 어디서든 접근할 수 있게 된다.
즉, 호스팅은 배포 과정 중에 하나의 단계로 볼 수 있다.
'TIL' 카테고리의 다른 글
Loss에 대한 고찰 (2) | 2024.11.19 |
---|---|
[자바스크립트] 비동기 처리(Ajax, Pjax)와 Promise, Async/Await문법과 axios와 fetch 개념들 핥아먹기 (0) | 2024.02.11 |
Next.js - 노마드 코더[CSR,SSR / SPA / DOM] (1) | 2024.02.11 |
타입스크립트 공부 내용 정리본 [기본] (노마드 코더 - 타입스크립트로 블록체인 만들기) (1) | 2024.01.31 |