반응형

백엔드 개발자

  • 백엔드 개발자는 IT 서비스에 필수적인 데이터들과 관련된 모든 프로그램을 관리하는 직군
    • 데이터를 저장하는 데이터베이스, 데이터를 처리하기 위한 API 서버, 파일들을 저장하는 스토리지 등

  • 백엔드라는 영역은 실제로 굉장히 넓음
    • 작은 스타트업에서는 소수의 백엔드 개발자가 매니지드 서비스을 활용해서 백엔드 서버들의 환경을 구축함
    • 서비스의 규모가 커지면 방대한 양의 데이터와 데이터 요청을 다루기 위해서 많은 백엔드 개발자들이 필요해지며, 백엔드 개발자의 역할이 전문적으로 나뉘게 됨
  • 백엔드 개발자는 다양한 역할을 하며 큰 회사일수록 그 안에서 전문 분야를 나눠서 맡음
    • API를 개발하는 API 개발자
    • 데이터베이스를 전문으로 맡는 DBA(데이터베이스 관리자)
    • 클라우드를 전문적으로 맡는 클라우드 엔지니어 등

 

API 개발

  • API 서버는 클라이언트에게 요청을 받아 데이터베이스에서 적절한 데이터를 넘겨주는 역할

  • 백엔드 개발자는 API 서버에서 클라이언트의 요청에 응답할 수 있도록 API를 개발함
    • 로그인, 회원가입, 상품 리스트 받기, 결제하기 등 IT 제품에서 사용하는 많은 기능들은  API 서버에서 나옴
  • 서비스 규모가 커질 수록 API서버를 여럿 두어서 역할 별로 나누기도 함
    • 예를 들면 로그인, 회원가입 등 유저를 담당하는 API 서버와 결제를 담당하는 API 서버로 나눔
    • 이렇게 API 서버를 유형별로 잘개 쪼개서 관리하는 방식으로 마이크로 서비스라는 개념이 존재

 

데이터베이스 관리

  • 데이터베이스에는 서비스에 필요한 모든 데이터들이 들어 있음
    • 당근마켓을 예로 들면 당근마켓 서비스는 유저, 상품, 결제 등의 데이터를 바탕으로 동작하게 됨
    • 이때 백엔드 개발자는 해당 데이터들을 개념적으로 구분해서 넣을 수 있는 테이블(공간)을 설계하게 하고 테이블 안에는 필드를 통해 데이터를 구분하게 됨

  • 상품이라는 테이블을 만들 때는 이메일, 닉네임, 성별 등의 정보들을 저장할 수 있는 필드를 설계하며 이를 데이터 모델링 한다고도 함
    • 데이터베이스를 설계할 때 ER 다이어그램 을 이용해서 시각화를 할 수 있음
  • 만약 나중에 상품의 할인 기능이 들어가게 된다면 백엔드 개발자는 할인 기능 관련 데이터도 들어갈 수 있도록 테이블에 새로운 필드를 추가해야 함
    • 서비스가 발전할수록 동시에 백엔드 개발자도 데이터베이스를 계속 수정하고 확장해 나가는 걸 의미
  • 데이터베이스에 쌓이는 많은 데이터들은 API 서버를 통해서 이뤄짐
    • 유저의 회원가입, 상품 찜하기, 결제 등의 모든 데이터는 API 서버를 거쳐 데이터베이스에 쌓이게 됨
    • 이 때 API 서버에서 데이터베이스와 통신을 더 빠르고 쉽게 도와주는 ORM 이라는 것이 존재

 

서버 & 클라우드 관리

  • 웹을 제공하기 위해서는 웹 서버가 필요하고, 데이터를 제공하기 위해선 데이터베이스 서버가 필요하며 클라이언트와 데이터 통신을 하기 위해선 API 서버 가 필요함
    • 이렇게 IT 서비스를 제공하기 위해선 결국 서버들을 관리해야 함
    • 요새는 서버를 쉽게 구축할 수 있는 클라우드를 대부분 사용

  • 백엔드 개발자들은 클라우드를 이용해서 서버들을 구축함
    • 서버를 구축한다는 것은 컴퓨터에 클라이언트에게 정보를 줄 수 있는 서버 프로그램을 설치하는 것을 의미
    • 아무 것도 없는 컴퓨터에서 서버 프로그램을 설치하고 그 안에 개발된 코드를 실행시키는 것
  • IT 서비스의 규모가 커지면 관리해야 하는 서버들이 늘어남
    • 수많은 클라이언트의 요청을 처리하는 API 서버를 돕기 위한 캐시 서버, 수많은 클라이언트 로그를 효율적으로 처리하기 위한 분산 처리 서버 등 목적에 맞는 서버들이 나오게 됨
    • 백엔드 개발자는 서버를 구축하는 것 뿐만 아니라 효율적으로 관리하기 위해 노력함

  • 클라이언트가 많아질 수록 API 서버는 처리해야 하는 요청량이 점점 많아지게 되고 서버가 바빠지면서 응답하는 속도가 느려지게 되어 결국 유저에게 불편함을 주게 됨
    • 이를 방지하기 위해 백엔드 개발자는 로드밸런싱 방식을 적용해서 API 서버 환경을 개선할 수 있음(클라우드에서 쉽게 적용 가능)
  • 백엔드 개발자는 서버를 효율적으로 관리하기 위해 노력함
    • 최소한의 비용으로 최대한의 효율을 내기 위함
    • 서버들을 효율적으로 잘 관리하기 위해서 백엔드 개발자들은 아키텍처 공부가 필요
    • 클라이언트 입장에서는 같은 데이터를 내려주는 건 변함이 없지만 아키텍처에 따라 응답 속도, 백엔드 개발자가 개발하는 속도 그리고 비용 등 많은 부분이 결정됨

 

Reference

https://www.inflearn.com/course/it-%EA%B0%9C%EB%B0%9C%EC%A7%80%EC%8B%9D#

 

IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z - 인프런 | 강의

본 강의는 멤버십 구독 개념으로 한 번 구매하면 계속 추가되는 수업도 수강할 수 있습니다😃, [사진] 이 강의는!  단순히 개발 용어만을 알려주지 않습니다.IT 회사에서 개발자들이 실제로 하

www.inflearn.com

https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304

 

[IT 개발자와 일할 때 필요한 모든 개발지식] A to Z 자료 모음집 By 그랩

장담하건대 이 내용들만 알고 계시면 IT 개발의 전체적인 흐름은 전부 파악한다고 보셔도 무방합니다.

www.grabbing.me

 

반응형
반응형

서버 스케일링

  • 많은 사용자가 서비스를 이용할수록 서버에게 많은 요청이 가게 됨 -> 트래픽이 높아짐
    • 트래픽이 높아질수록 서버는 바빠지므로 요청에 응답하기 위해 해당 컴퓨터의 CPU, 메모리를 사용하게 되고 점점 자원이 남지 않아 결국 응답을 바로 못해주고 밀리게 되는 병목현상이 발생

  • 이런 문제를 해결하기 위한 방법으로 스케일 업 스케일 아웃, 크게 두가지 방법이 존재
    • 스케일 업: 해당 서버의 컴퓨터 성능을 높이는 것으로 CPU나 메모리의 성능을 높여 더 많은 요청에 대응할 수 있게 함
    • 스케일 아웃: 서버를 여러대로 늘리는 것으로 트래픽을 분산시켜 하나의 서버가 일하는 양을 줄여줌
    • 클라이언트에서 요청이 많아지면 자연스럽게 API 서버가 바빠지고 이와 맞물려있는 데이터베이스, 스토리지 등도 바빠지게 되므로 이들도 같이 스케일링 작업을 해줘야 함
  • 클라우드는 자동으로 스케일링을 해주는데 이를 오토 스케일링이라고 함
    • 덕분에 서버 개발자들은 새벽에도 서버를 계속 모니터링(관찰)하지 않을수 있게 됨

  • 로드(Load): 서버 입장에서 처리해야할 일
  • 로드밸런싱: 스케일 아웃을 통해 로드를 분산시키는 과정
  • 서버 스케일링 작업 외에도 캐시 서버를 사용해서 서버의 계산작업을 줄여줄 수 있음
  • 실제로 IT 서비스에서는 서버의 부하를 줄이기 위해 여러 가지의 테크닉들을 사용

 

모니터링

  • 모니터링: 서버의 컴퓨터 성능을 관찰하는 것을 의미
    • 서버가 높은 트래픽으로 인해 장애가 발생한다면 클라이언트(웹, 앱)도 정상적으로 사용이 불가능
    • 서버 컴퓨터의 상태를 지속적으로 점검할 수 있는 장치로 모니터링 장치가 필요
  • 보통 트래픽이 많은 API(WAS)서버, 데이터베이스 등에 모니터링 도구를 붙여서 사용

 

Reference

https://www.inflearn.com/course/it-%EA%B0%9C%EB%B0%9C%EC%A7%80%EC%8B%9D#

 

IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z - 인프런 | 강의

본 강의는 멤버십 구독 개념으로 한 번 구매하면 계속 추가되는 수업도 수강할 수 있습니다😃, [사진] 이 강의는!  단순히 개발 용어만을 알려주지 않습니다.IT 회사에서 개발자들이 실제로 하

www.inflearn.com

https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304

 

[IT 개발자와 일할 때 필요한 모든 개발지식] A to Z 자료 모음집 By 그랩

장담하건대 이 내용들만 알고 계시면 IT 개발의 전체적인 흐름은 전부 파악한다고 보셔도 무방합니다.

www.grabbing.me

 

반응형

'비개발자의 개발 지식 스터디 > 백엔드' 카테고리의 다른 글

클라우드 서비스(SaaS, PaaS, IaaS)  (0) 2023.07.24
클라우드  (0) 2023.07.14
백엔드란?  (0) 2023.07.14
반응형

클라우드란?

  • 백엔드의 구성인 데이터베이스 서버, API 서버, 스토리지 서버 등은 전부 서버이고 하나의 프로그램이므로 전부 컴퓨터 안에서 동작함
    • 과거 웹 서비스 제공을 위해 웹/API/DB 서버 구축 및 네트워크 설정이 필수적이였음
  • 현재 가상화 기술 기반의 클라우드 서비스를 제공하며 위의 모든 요소를 손쉽게 구축할 수 있게됨
    • 기존에 회사에서 관리해야 했던 컴퓨터들을 클라우드 회사에서 직접 관리
    • 사용자들은 본인의 컴퓨터에서 네트워크 접속을 통해 클라우드의 컴퓨터들을 사용

 

클라우드 특징

1. 사용자가 몇 번의 클릭만으로 온라인을 통해 서버 컴퓨터를 빌릴 수 있음

  • 온라인으로 손쉽게 서버 컴퓨터를 빌리는 것을 서버 호스팅이라고 함
  • 데이터베이스 같은 특정 프로그램이 미리 설치되어 있는 컴퓨터도 제공 가능
    • 개발자들이 프로그램을 설치하고 설정하는 시간을 줄일 수 있음

 

2. 컴퓨터 간의 네트워크 설정을 손쉽게 할 수 있음

  • 기존에는 직접 네트워크 설정과 방화벽 설정을 작업해야 했던 반면, 클라우드 환경 내에서는 네트워크 설정들을 전부 작업할 수 있음
    • 기존에는 서버 컴퓨터들의 네트워크 관련 작업을 진행하는 네트워크 엔지니어가 필요
    • 클라우드는 컴퓨터에 일일히 직접 접근하지 않아도 됨
      • 데이터베이스는 API 서버나 관리자를 제외하고 접근할 수 없게 해야하는데 이런 작업들을 클라우드에서 손쉽게 설정 가능

 

3. 컴퓨터의 성능을 자유롭게 설정할 수 있음

  • 클라우드에서는 자신이 원하는 옵션에 맞게 컴퓨터를 빌릴 수 있음
    • 서버는 클라이언트의 요청에 응답을 해주고, 보통 서버는 수백의 클라이언트 많게는 수천의 클라이언트를 상대하므로 수많은 클라이언트의 요청에 응답하기 위해 열심히 일을 함
    • 네트워크 관점에서 클라이언트의 요청량을 트래픽이라고 하는데 트래픽이 점점 많아지면 서버 컴퓨터가 할 일이 점점 밀리게 되고, 그러면 자연스럽게 성능이 저하되고 응답하는 시간이 길어지게 됨
    • 결국 더 많은 컴퓨팅 자원(높은 CPU, 메모리)이 있어야 안정적인 서버 운영이 가능해짐
  • 클라우드에서 트래픽에 대응해 컴퓨팅 자원을 줄이거나 늘리는 스케일링 작업을 손쉽게 해줌
    • 쉽게 얘기하면 서버 컴퓨터를 늘려주거나, 성능을 높여줌

 

백엔드와 클라우드

  • 대부분의 IT 기업들은 백엔드 서버들을 전부 클라우드 환경에서 관리
    • 웹을 제공해주는 웹서버, 데이터 통신을 위한 API 서버, 이미지 등의 파일을 관리하는 스토리지 서버, 로그들을 관리하는 로그 서버, 빅데이터를 저장하는 빅데이터 저장소(DB) 등 모든 서버를 전부 클라우드에서 쉽게 사용할 수 있도록 제공
  • 대표적으로 많이 쓰이는 클라우드는 아마존의 AWS, 구글의 GCP, 마이크로소프트의 Azure, 네이버의 네이버 클라우드 등이 존재
    • IT 기업들이 가장 많이 사용하는 클라우드는 AWS
  • 백엔드 개발자가 보통 클라우드 환경을 관리
    • 보통 백엔드 개발자를 채용할 때 기업의 자격 요건을 보면 AWS를 잘 다루는 것도 포함됨

 

Reference

https://www.inflearn.com/course/it-%EA%B0%9C%EB%B0%9C%EC%A7%80%EC%8B%9D#

 

IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z - 인프런 | 강의

본 강의는 멤버십 구독 개념으로 한 번 구매하면 계속 추가되는 수업도 수강할 수 있습니다😃, [사진] 이 강의는!  단순히 개발 용어만을 알려주지 않습니다.IT 회사에서 개발자들이 실제로 하

www.inflearn.com

https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304

 

[IT 개발자와 일할 때 필요한 모든 개발지식] A to Z 자료 모음집 By 그랩

장담하건대 이 내용들만 알고 계시면 IT 개발의 전체적인 흐름은 전부 파악한다고 보셔도 무방합니다.

www.grabbing.me

 

반응형

'비개발자의 개발 지식 스터디 > 백엔드' 카테고리의 다른 글

클라우드 서비스(SaaS, PaaS, IaaS)  (0) 2023.07.24
서버 스케일링 & 모니터링  (0) 2023.07.14
백엔드란?  (0) 2023.07.14
반응형

백엔드란?

  • 프론트엔드는 폭넓은 의미로는 사용자가 서비스를 이용할 때 쓰게 되는 웹, 앱 등을 의미
  • 백엔드는 서비스에 필요한 모든 데이터를 저장하고 다루는 공간

  • 많이 사용하는 서비스들을 이용한 예
    • 네이버 - 회원가입한 유저들 데이터, 웹툰 데이터들, 카페 데이터들, 블로그 데이터들 등 수많은 데이터
    • 카카오톡 - 유저 데이터, 유저가 들어간 채팅방 데이터, 유저의 친구들 데이터 등 서비스에 필요한 많은 데이터
  • 백엔드는 서비스에 필요한 데이터들을 저장하고 클라이언트(사용자, 관리자 등)에게 알맞게 데이터를 가공하는 역할

  • 데이터를 가공한다는 것은 원형의 데이터들을 목적에 맞게 가공하는 걸 의미
    • 데이터들을 바탕으로 목적에 맞게 데이터들을 끌어와서 필요없는 건 빼고 필요한 건 살리는 작업

 

백엔드의 구성

  • 프론트엔드는 보통 웹, 앱 등 특정한 프로그램을 하나 개발하면 되는 반면 백엔드는 여러가지 서버 프로그램들이 유기적으로 연결되어 있음

 

데이터베이스

  • 데이터베이스는 서비스에 필요한 데이터를 저장하는 역할
    • 온라인 클래스를 제공하는 서비스라면 데이터 중에 클래스 관련 정보들을 저장하는 데이터베이스가 존재
  • 데이터베이스도 데이터를 제공하는 서버이므로 즉, 하나의 서버 프로그램이고 운영체제(OS) 위에서 동작함

  • 데이터베이스는 서비스에 필요한 중요한 정보들이 전부 들어으므로 철저하게 보안 유지 필요
    • IT 회사에서 데이터베이스가 해킹 당하는 경우, 회사의 모든 중요한 정보가 유출 됨
    • 데이터베이스에서 직접 정보를 가져올 수 있는 주체 제한 필요

 

API 서버

  • 기본적으로 데이터베이스는 웹, 앱을 사용하는 클라이언트는 접근을 막는 대신에 클라이언트에게 대신 데이터를 전달해주는 API 서버에게는 연결을 허용해줌
    • 보통 데이터베이스는 외부 클라이언트의 네트워크 연결을 하지 못하도록 방화벽을 설정
    • 보안을 위해서 데이터베이스에 접근할 수 있는 건 API 서버(WAS 서버), 서비스 관리자 등으로 한정함
    • 이 때 보통 특정 IP주소를 허용하는 방식으로 데이터베이스 연결을 관리

  • 위 사진처럼 API 서버는 데이터베이스의 데이터들을 가공해서 클라이언트에게 전달하는 역할을 함

  • API 서버에는 다양한 API 요청을 처리하도록 개발됨
    • 위 사진처럼 로그인, 상품 정보 받아오기 등 다양한 요청을 처리할 수 있도록 백엔드 개발자가 API 서버 개발을 함
  • 프론트엔드(웹, 앱)에게 데이터를 제공하는 API 서버를 WAS(Web Application Server)라고 하며, API 서버가 조금 더 넓은 개념이고 WAS는 프론트엔드에게 데이터를 건네주는 서버를 한정지어서 얘기함

 

파일 스토리지

  • 스토리지 서버: 이미지 등의 파일들을 전문적으로 저장하는 서버로 파일들을 저장한 후 URL 주소를 통해 다운을 받는 방식
    • 대표적으로 우리가 사용하는 웹에서 이미지의 경우 웹 서버, API 서버를 통해 URL 주소를 전달받고 URL 주소를 통해 파일 스토리지에 접근해서 이미지를 다운받고 보여줌(이미지 자체를 받기에는 용량이 큼)
    • 실제로 데이터베이스에도 파일을 저장할 수 있지만 데이터베이스는 서비스에 필요한 핵심 데이터들, 즉 텍스트 위주로 이루어진 내용들을 다루는데 최적화되어 있음

 

캐시

  • 캐시: 자주 쓰이는 정보를 저장해 놓는다는 개념
    • 보통 API 서버에서는 데이터베이스에서 정보를 꺼내고, 가공을 하는 작업을 하는데 이 때 API 서버에서 항상 동일한 결과를 제공해준다면 매번 데이터베이스, API 서버가 작업할 필요가 없음
    • 캐시 서버를 이용하면 API 서버와 데이터베이스가 일을 따로 하지 않고 바로 저장된 데이터를 제공해줄 수 있음

  • 캐시 서버는 사용자와 가까운 곳에 임시 데이터를 캐시 형태로 저장하여 빠르게 제공
    • 정적 컨텐츠에 대해 활용도가 높음

 

Reference

https://www.inflearn.com/course/it-%EA%B0%9C%EB%B0%9C%EC%A7%80%EC%8B%9D#

 

IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z - 인프런 | 강의

본 강의는 멤버십 구독 개념으로 한 번 구매하면 계속 추가되는 수업도 수강할 수 있습니다😃, [사진] 이 강의는!  단순히 개발 용어만을 알려주지 않습니다.IT 회사에서 개발자들이 실제로 하

www.inflearn.com

https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304

 

[IT 개발자와 일할 때 필요한 모든 개발지식] A to Z 자료 모음집 By 그랩

장담하건대 이 내용들만 알고 계시면 IT 개발의 전체적인 흐름은 전부 파악한다고 보셔도 무방합니다.

www.grabbing.me

 

반응형

'비개발자의 개발 지식 스터디 > 백엔드' 카테고리의 다른 글

클라우드 서비스(SaaS, PaaS, IaaS)  (0) 2023.07.24
서버 스케일링 & 모니터링  (0) 2023.07.14
클라우드  (0) 2023.07.14
반응형

프론트엔드

  • 유저가 서비스를 이용하기 위해 사용하는 프로그램
    • 프론트엔드는 폭넓은 의미로 웹, 앱 등을 전부 포함 
    • 보통 브라우저를 통해서 웹을 실행

  • 실제로 웹이 브라우저에 보여지는 과정은 다음과 같음
    • 브라우저가 웹 프로그램을 전달해주는 웹서버에게 요청
    • 웹서버에서 (프론트엔드 개발자가 개발한) 웹을 전달
    • 브라우저에서는 다운받은 웹을 실행

  • 크롬에서 F12를 누르면 개발자도구가 열리며, 브라우저가 웹을 실행시키면서 나오는 정보들(네트워크 통신 기록, 프로그램 로그, HTML 소스 코드 등)을 확인할 수 있음

 

모바일 앱

  • 스마트폰에서 사용되는 앱으로 Android와 ios가 대표적
    • 앱은 오직 앱스토어에서만 다운받을 수 있음

  • 앱은 웹과 마찬가지로 화면 구성 및 동작 로직을 구현하고, 서버와 통신하면서 데이터를 전달받음
  • 하이브리드 앱 / 크로스 플랫폼 앱: 하나의 언어(프레임워크)로 개발해도 aos, ios 앱을 만들 수 있는 방법

 

백엔드

  • 서비스에 필요한 데이터를 바탕으로 프론트엔드(웹, 앱)과 통신하는 영역
    • 서비스를 하는데 필요한 모든 데이터를 저장하고 제공
    • 정보 제공 or 데이터를 쌓고 처리하기 위한 모든 서버 포함

  • 찜하기, 결제하기, 유저정보 받기 등의 동작을 처리하기 위해선 API 서버가 필요하며 API 서버는 데이터베이스와 통신하면서 데이터를 처리하고 응답을 내려줌

  • 서비스 핵심 데이터(유저, 제품 정보 등), 이미지, 동영상 파일, 사용자 로그 등의 IT서비스에서 대표적인 데이터들을 백엔드에서 전부 관리

 

클라우드

  • 데이터 스토리지, 컴퓨팅 파워(가상 컴퓨터)와 같은 컴퓨터 시스템 리소스를 필요시 바로 제공하는 것
    • 기존의 방법에서 서비스를 하기위한 서버 전용 컴퓨터가 필요한 반면, 클라우드는 서버 전용 컴퓨터 필요 x
    • 클라우드는 네트워크 관리를 손쉽게 제공

 

Reference

https://www.inflearn.com/course/it-%EA%B0%9C%EB%B0%9C%EC%A7%80%EC%8B%9D#

 

IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z - 인프런 | 강의

본 강의는 멤버십 구독 개념으로 한 번 구매하면 계속 추가되는 수업도 수강할 수 있습니다😃, [사진] 이 강의는!  단순히 개발 용어만을 알려주지 않습니다.IT 회사에서 개발자들이 실제로 하

www.inflearn.com

https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304

 

[IT 개발자와 일할 때 필요한 모든 개발지식] A to Z 자료 모음집 By 그랩

장담하건대 이 내용들만 알고 계시면 IT 개발의 전체적인 흐름은 전부 파악한다고 보셔도 무방합니다.

www.grabbing.me

 

반응형

+ Recent posts