반응형

가상화 기술

  • 클라우드가 전 세계적으로 인기를 끌 수 있었던 건 바로 가상화 기술 덕분
  • 컴퓨터의 운영체제는 하드웨어 자원(CPU, 메모리)을 100% 잘 활용하지 못하므로 자원을 효율적으로 사용할 수 있는 기술에 대한 연구가 활발하게 진행 됨 -> 가상화 기술의 원천
  • 가상화 기술은 하드웨어 자원(CPU, 메모리, 디스크 등)을 효율적으로 사용하기 위해 추상화라는 소프트웨어 기법을 통해 여러 개로 쪼개는 기술

  • 도커,컨테이너는 수많은 가상화 기술 중 최근 가장 인기를 끌고 있는 기술로 최근 들어 컨테이너를 활용해서 클라우드에 서비스를 배포하는 경우가 많아짐
  • 가상화 기술을 거치면 우리의 컴퓨터 자원을 효율적으로 사용할 수 있음
    • 여러 개의 운영체제를 이용해서 한 대의 컴퓨터로도 여러 사용자들이 동시에 이용할 수 있게 됨
    • 실제로 클라우드를 사용하는 사람들은 본인만의 컴퓨터 자원을 할당받아서 사용하는 것 같지만 사실은 하나의 컴퓨터 중에서도 일부 가상화된 자원을 할당받아서 사용함

 

Iaas, Paas, SaaS

  • 클라우드를 제공하는 회사(Amazon, Microsoft, Google 등)에서는 데이터 센터에 보유하고 있는 수많은 컴퓨터들을 통해서 컴퓨팅 파워, 특정 프로그램 설치 및 실행, 소프트웨어 등을 제공

 

Iaas (Infrastructure as a Service)

  • 컴퓨팅 파워 일부를 고객들에게 제공하는 서비스
    • 운영체제와 컴퓨팅 자원을 돈을 받고 빌려줌
    • 대표적으로 AWS의 EC2가 존재하며 많은 개발자들이 이를 이용해 OS, 자원(CPU, 메모리) 성능 등을 선택함
    • 비쌀수록 더 좋은 성능의 컴퓨팅 파워를 빌릴 수 있음

  • 개발자들이 IaaS를 이용한다는 것은 컴퓨터를 가상으로 빌리는 것이 전부이고, 이 외에는 개발자가 전부 관리를 해야 하며 여기서 관리라는 것은 아래와 같은 것들이 존재
    • 프로그램을 실행하기 위한 환경 설치 
      • 결국 개발한 프로그램을 실행하기 위해선 실행할 수 있는 환경이 컴퓨터에 설치되어야 함
      • 예를 들어 java라는 프로그래밍 언어로 개발한 프로그램을 돌리기 위해선 이 프로그램을 실행할 수 있는 java 런타임이 설치되어 있어야 함
    • 컴퓨터의 상태를 모니터링해야 함
      • 웹 서비스같이 사용자들이 이용하는 웹 서버(컴퓨터)는 네트워크 트래픽에 예민하게 반응해야 함
      • 이벤트나 다른 특별한 이슈가 있을 때 트래픽이 갑자기 늘어난다면 컴퓨터의 자원이 부족해지고 성능은 저하되는데 이 때 모니터링을 하면서 컴퓨터를 스케일링하거나 다른 조치를 취해야 함
      • 네트워크 트래픽뿐만 아니라 자원을 많이 사용하게 되는 컴퓨터는 지속적인 모니터링 및 대처가 필요

 

PaaS (Platform as a Service)

  • IaaS에서 나아가 특정 프로그램들을 설치하고 실행시킨 후 관리까지 해주는 것
    • 개발자들이 어플리케이션(프로그램) 개발에만 집중할 수 있게 해주고 컴퓨터 관리까지 제공
    • PaaS에서 자동으로 실행되는 프로그램을 업데이트하고 자원의 사용 정도에 따라 자동으로 스케일링 작업 진행
    • 대표적인 PaaS로는 AWS의 Elastic Beanstalk, Labmda 그리고 Google의 App Engine 등이 존재
  • 대부분의 스타트업에서는 개발자가 부족하기 때문에 Paas를 사용
    • 보통 프로그램(웹, 앱, 서버 등)을 개발하는 작업을 제외하고는 대부분을 클라우드 PaaS에 맡기는 방식으로 진행

 

SaaS (Software as a Service)

  • 위에서 다룬 IaaS, PaaS는 개발자들이 사용하는 서비스
    • IaaS, Paas를 이용해서 개발자들이 만든 소프트웨어를 실행시키고 이를 통해 새로운 서비스를 창출하는 형태
  • SaaS(Software as a Service)는 클라우드 환경에서 제공되는 소프트웨어를 총칭함
    • IaaS, PaaS와는 다르게 아예 다른 개발자들이 만든 어플리케이션까지 함께 제공되는 서비스의 형태

  • 대표적 SaaS인 Google Drive 사용을 생각해보면 컴퓨터의 성능을 전혀 신경 쓰지 않아도 되고 편하게 어플리케이션 기능(파일 업로드)를 사용 할 수 있음
    • SaaS를 잘 이용하면 개발자가 없이도 목적에 맞는 소프트웨어를 활용할 수 있음
  • SaaS는 크게 2가지 유형 B2B SaaS와 B2C SaaS로 나눌 수 있음
    • 일반 사용자들이 사용하는 B2C 형태의 SaaS로는 구글 스프레드시트, MS 오피스 365 같은 소프트웨어 등이 있음
    • 기업이 사용하는 B2B SaaS로는 업무 협업툴 Slack, 쇼핑몰 구축 솔루션 Shopify, 모바일 앱의 채팅용 솔루션을 제공하는 SendBird 등이 있음
  •  SaaS는 꼭 클라우드를 제공하는 대형 IT 회사들만 제공할 수 있는게 아니며, 작은 IT 회사들도 클라우드에서 컴퓨팅 파워(IaaS, PaaS 등)을 빌려서 새롭게 소프트웨어를 판매한다면 이는 모두 SaaS라고 볼 수 있음

 

Reference

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

 

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

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

www.grabbing.me

 

반응형

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

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

서버 스케일링

  • 많은 사용자가 서비스를 이용할수록 서버에게 많은 요청이 가게 됨 -> 트래픽이 높아짐
    • 트래픽이 높아질수록 서버는 바빠지므로 요청에 응답하기 위해 해당 컴퓨터의 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

+ Recent posts