에뛰드 블로그
article thumbnail

🩷 02-1 서버는 뭐고 AWS는 뭔가요?

🩵 서버와 클라이언트

서버 : 정보나 서비스를 저장하고 있다가 필요한 경우 네트워크를 이용해 사용자의 컴퓨터 혹은 스마트폰으로 전달해 주는 것

클라이언트 : 데이터를 받는 것

  • 컴퓨터, 스마트폰, 내비게이션, 스마트 홈, 스마트 워치 모두 해당

 

🤍 웹 서버

웹 서버 : 컴퓨터의 특정 폴더에 담긴 HTML 파일로 웹사이트를 띄울 수 있도록 하는 프로그램

 

🩵 데이터 센터

데이터 센터, IDC : 해당 조건을 갖춘 전문 시설

  • 역할에 적합한 하드웨어 성능을 갖춰야 하며 언제 어디서든 접속할 수 있는 네트워크가 해킹으로부터 안전
  • 적절한 온도와 습도 유지
  • 정전이 나거나 기기에 물을 쏟거나 화재가 나는 사고를 미연에 방지
  • 사고가 났을 경우 빠르게 대처

서버 호스팅 : 서버용 컴퓨터를 임대해 주는 서비스

  • 데이터 센터에 설치된 컴퓨터에 원격으로 접속해서 내 컴퓨터처럼 사용할 수 있음

온프레미스 : 회사에서 자체적으로 서버를 갖추고 관리하는 것 

  • 보안 이슈, 회사의 필요에 따라 서버를 자유롭게 구축하고 통제할 필요가 있을 경우 사용
  온프레미스 서버 호스팅
장점 서버에 관한 모든 것을 직접 구성하고 통제할 수 있음 발생하는 비용 절감
단점 그만큼 서버에 대한 해박한 지식과 경험이 있는 인력 필요

물리적 공간과 환경 갖춰야함
유출되어서는 안되는 정보를 외부 컴퓨터에 둔다는 리스크

 

단순 서버 호스팅 : 데이터 센터의 컴퓨터를 한 대 빌려 그 컴퓨터가 서버 역할을 할 수 있도록 소프트웨어를 설치하고 설정한 뒤 온라인 서비스를 제공

  • 장점
    • 적은 돈을 투자해 서버 컴퓨터를 빌려 원하는 대로 자유롭게 사용할 수 있음
  • 단점
    • 사용 가능한 용량이 한정적
    • 서버에 대한 많은 지식이 필요

 

🩵 클라우드 컴퓨팅

클라우드 컴퓨팅 : 서버, 저장소, 데이터베이스, 네트워킹, 소프트웨어 등과 같은 컴퓨팅 서비스를 인터넷 (클라우드)으로 제공하는 방식

  •  아마존 AWS, 마이크로소프트 애저, 구글 GCP, 네이버 NCP
  • 장점
    • 필요에 따라 사용량을 탄력적으로 조절
    • 서버 사용에 필요한 어려운 기술적 요소들도 제공받을 수 있음
    • 자체적으로 전문가를 두지 않아도 안정적으로 자사 또는 개인 서비스 손쉽게 운영 가능
  • 단점
    • 서버가 회사 외부에 있음
    • 높은 비용

 

 

AWS : 아마존에서 제공하는 클라우드 컴퓨팅 서비스, 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스 제공

 

🩵 인프라 VS 플랫폼 VS 소프트웨어

🤍 IaaS

IaaS (이아스, 아이아스) : 클라우드를 이용해서 서버용 인프라를 대여해주는 서비스

  • 이용자가 대여받은 서버에 보안, 네트워크 등 각종 설정부터 소프트웨어 설치, 서비스 실행 및 관리까지 직접 수행
  • AWS 의 EC2, 마이크로 소프트, IBM 등에서 제공

 

🤍 PaaS

PaaS (파스) : 애플리케이션을 개발하고 서비스하기 위해 필요한 서버, 운영체제, 개발환경 등을 자동으로 설치하고 제공함으로써 사용자가 애플리케이션 개발에만 집중할 수 있도록 플랫폼을 제공하는 서비스

  • 인프라 구축과 유지비용등을 고려할 필요 없이 소프트웨어만 개발하면 손쉽게 애플리케이션을 실행, 배표할 수 있음
  • AWS의 일래스틱 빈스토크, 헤로쿠 등이 있음

 

🤍 SaaS

SaaS (싸스) : 소프트웨어가 이미 완성된 형태로 제공되는 클라우드 서비스

  • 인프라나 개발 환경을 구축할 필요 없이 사용료만 지불하면 이미 만들어진 소프트웨어를 사용할 수 있음
  • 장점
    • laaS, PaaS와 달리 초기 구축 비용 줄일 수 있음
  • 단점
    • 제공 업체가 만들어 놓은 서비스를 그대로 사용해야 하기 때문에 불필요한 기능이 비용에 포함되어 있기도 함
  • 구글 드라이브, 네이버 N클라우드, 드롭박스, MS 오피스 365 등이 있음

 

🩷 02-2 웹사이트는 어떻게 만들어지나요?

🩵 웹 브라우저

웹 브라우저, 브라우저 : 웹사이트를 열어 인터넷 서핑을 하는데 사용되는 소프트웨어

 

🩵 HTML

HyperText MarkUp Language : 웹 페이지의 각 요소들을 배치하는 역할, 마크업 언어

 

태그 : '< >' 안에 글자가 들어간 body, div, h1 같은 요소

          형식 : <태그> 내용 </태그>

 

🩵 CSS

특정 요소들의 디자인 속성을 지정해 주는 역할, 스타일 언어

 

🩵 자바스크립트

동적인 기능을 구현하는 역할

 

🩵 웹 표준


웹 서핑
: 거미줄과 같은 통신망을 뜻하는 웹 (web)과 바다에서 파도타기를 뜻하는 서핑 (surfing)을 결합해 놓은 합성어
바다에서 파도를 타듯 이리저리 움직이며 여기저기 둘러본다는 의미

 

웹 표준 : 국제적으로 권고된 사항

 

🩵 반응형 vs 적응형

🤍 반응형 웹사이트

반응형 웹 : 페이지 내 요소들을 신축성 있게 만들어 기기나 화면 크기에 맞게 너비나 높이, 위치 등을 자동으로 조절하는 웹사이트

 

🤍 적응형 웹사이트

적응형 웹 : 화면 크기에 따라 PC용과 모바일용 웹사이트를 따로 만드는 것

 

 

🩷 02-3 쿠키, 토큰, 캐시는 일상에서 쓰는 그 단어인가요?

🩵 쿠키

쿠키 : 사용자의 브라우저에 저장되는 정보

  • 보안 상 민감한 정보를 저장하는 데에는 적합하지 않음
  • 혹여 남에게 탈취되거나 사용자에 의해 조작되어도 크게 문제가 되지 않을 정보를 브라우저에 저장함으로써 웹사이트 이용을 편리하게 해 주는 것

🩵 세션

세션 : 서버가 사용자를 기억하고 있는 상태

 

  쿠키 세션
저장 위치 사용자의 브라우저 서버 (세션 쿠키 제외)
관리 주체 사용자 서비스 제공자
저장 대상 가벼운 편의를 위한 정보 서버가 관리해야 할 정보 (ex : 로그인)
유지 기간 브라우저를 종료해도 데이터 유지 브라우저 종료 시 데이터 삭제
요청 속도 빠름 느림 (서버 처리 필요)
보안 취약 (로컬 기기에 저장) 좋음 (브라우저 메모리에 저장)

 

🩵 토큰

토큰 : 서버가 기억해 둘 필요 없이 사용자가 스스로를 증명할 수 있는 수단

 

  세션 방식 토큰 방식
장점 사용자의 상태를 원하는 대로 통제 가능 상태를 따로 기억해 둘 필요가 없음
단점 메모리에 로그인되어 있는 사용자의 상태를 보관해야 함 한 번 로그인 한 사용자의 상태는 토큰이 만료될 때까지 제어가 불가능함

 

🩵 캐시

캐시 (cache) : 데이터를 다시 가져오지 않도록 가까이 저장해 두는 기술

 

  쿠키 캐시
공통점 정보를 저장하여 재활용하는 기술
차이점 사용자의 수고를 덜어주는데 목적 데이터의 전송량을 줄이고 서비스 이용 속도를 높이는데 목적

 

🩵 CDN

CDN (콘텐츠 전송 네트워크) : 각지에 캐시 서버를 두어 부하를 분산시키는 기술

  • 본 서버는 캐시 서버에 데이터를 한 번만 전송하면 됨
  • 대량의 데이터를 전송하는 서비스, 유튜브나 넷플릭스 같은 동영상 서비스에 필수

 

🩷 02-4 스마트폰 앱인데 웹사이트라고요?

🩵 네이티브 앱

네이티브 앱 : 기기에 작동하는 운영체제에 특화된 방식으로 제작된 앱

  • 장점
    • 각 스마트폰의 모든 기능 사용할 수 있음
    • 성능을 최대한으로 활용할 수 있음
    • 카메라나 GPS, 블루투스 등 기기 내 장치 사용하는 앱, 영상 편집 앱과 같이 성능 최대한 사용해야 하는 앱에 최적화
  • 단점
    • IOS, 안드로이드에서 돌아가는 애플리케이션을 만들어야 하기 때문에 개발에 소요되는 인력과 시간 많이 필요
    • 앱을 공개하거나 업데이트 하는데 있어도 까다로움

네이티브 앱 개발은 각각의 운영체제에 최적화된 앱을 만드는 방법
네이티브 앱으로 개발된 앱은 컴퓨터로는 접속 불가능

 

🩵 크로스 플랫폼

크로스 플랫폼 : 하나의 소스 코드로 여러 개의 운영체제에서 작동할 수 있는 프로그램을 만드는 방식

  • 장점
    • 네이티브 앱으로 제작하는 것보다 더 쉽고 적은 자원으로 애플리케이션 제작 가능
      • 리액트 네이티브 - 자바스크립트
      • 닷넷 마우이 - C#
      • 스케줄 관리 앱, 쇼핑 앱, 사진 보정 앱과 같이 캘린더, 카메라 등 스마트폰의 기본 기능을 활용하면서도 높은 성능을 요구하지 않는 앱을 개발하기에 적합
    • 스케줄 관리 앱, 쇼핑 앱, 사진 보정 앱과 같이 캘린더, 카메라 등 스마트폰의 기본 기능을 활용하면서도 높은 성능을 요구하지 않는 앱을 개발하기에 적합
  • 단점
    • 네이티브 앱에 비해 성능을 100% 끌어올릴 수 없음
    • 기기의 활용도 떨어짐
    • 주요 기능을 업데이트할 때마다 양쪽 앱의 마켓의 심사를 거쳐야함

 

🩵 웹 앱

웹 앱 : 모바일 기기의 브라우저에서 접속할 수 있는 모바일 웹사이트로, 모바일 앱과 비슷한 UI/UX를 제공

  • 장점
    • 웹 개발만으로 모바일용 앱을 만들 수 있음
    • 새 기능을 추가할 때 서버에 파일을 업로드해서 사이트 내용만 바꿔주면 업데이트되므로 언제든 최신 버전으로 유지 가능
    • 플랫폼 제작 비용도 저렴하고 개발 기간도 짧음
  • 단점
    • 기기의 활용도와 성능 면에서 네이티브 앱과 크로스 플랫폼보다 뒤쳐짐
    • 높은 사양이 요구되는 작업이나 스마트폰 내부의 파일들을 다루는 기능, 각종 하드웨어 장치를 다루는 기능은 구현이 불가능하거나 어려움
    • 브라우저를 연 다음 필요한 앱 주소를 입력해서 접속해야 함

 

🩵 하이브리드 앱

하이브리드 앱 : 네이티브 앱 안에 웹 뷰로 웹사이트를 실행해서 네이티브 앱과 웹 앱의 장점을 취할 수 있는 앱

  • 장점
    • 제품을 유연하게 운영할 수 있음
    • 웹사이트로 구현이 불가능한 필수 기능들만 네이티브 앱으로 개발하고, 나머지 기능은 모두 웹 뷰 안에 들어갈 웹사이트로 만들면 되기 때문에 비교적 개발 부담이 적음
    • 앱 기능을 업데이트할 때를 제외하고 앱 마켓의 심사 없이 언제든지 앱의 내용을 수정할 수 있음
    • 앱의 특성에 따라 네이티브로 제작할 부분과 웹 뷰로 제공할 부분을 다양하게 구성할 수 있음

 

🩵 PWA

PWA : 아이콘 추가 등 진보된 브라우저 기능을 활용해서 네이티브 앱 같은 다양한 편의 기능을 제공하는 웹 앱

  • 홈 화면에 저장되면 브라우저에서 실행되고 네이티브 앱처럼 작동됨

 

🩷 02-5 웹의 보이는 곳과 보이지 않는 곳

🩵 프론트엔드

프론트엔드 : 웹사이트 구성 요소 중 클라이언트 컴퓨터의 브라우저에서 작동하는 부분

 

프론트엔드 개발자, 클라이언트 개발자 : 브라우저에서 자바스크립트로 동작하는 부분을 전문적으로 개발하는 직군

 

🩵 백엔드

백엔드 : 웹사이트나 모바일 앱과 같은 온라인 애플리케이션의 구성 요소 중 서버에서 작동하는 프로그램

 

백엔드 개발자, 서버 개발자 : 백엔드 업무를 전문적으로 개발하는 직군

 

사용 언어 : 자바, 파이썬, 자바스크립트, C#, PHP, 루비 등 다양한 프로그래밍 언어 사용

 

🩵 프레임워크

프레임워크 : 프로그램의 기본 골격이 갖춰져 있어 개발자가 원하는 제품을 수월하게 만들 수 있도록 출시된 개발키트

라이브러리 : 특정 기능을 수행하는 소프트웨어 조각이자 여러 프로그램에 들어갈 수 있는 부품

 

🩵 API

API (Appliction Programming Interface) : 여러 소프트웨어의 특정 기능들을 요청하고 호출하기 위한 약속

 

API는 인터넷으로 연결된 주체뿐만 아니라 컴퓨터 내부의 시스템과 소프트웨어끼리 기능을 호출하는 데도 사용됨

 

  • 일반적으로 하나의 서비스를 만드는 프론트엔드 개발자와 백엔드 개발자 사이에 만들어짐
    • 프론트엔드 개발자 : 요청을 보내고 응답으로 반환된 결과를 화면에 반영하는 기능 다룸
    • 백엔드 개발자 : 요청된 작업을 수행하는 기능 다룸

REST API
REST API (REpresentational State Transfer API) : 개발자 사이에서 보편적으로 공유되는 방식
REST API를 사용함으로써 개발자들은 '이 기능은 어떻게 요청하겠구나'하고 짐작할 수 있기 때문에 보다 수월하게 개발 참여할 수 있음

 

 

🩵 XML, JSON, YAML, AJAX

계층과 구조를 가진 정보를 텍스트로 표현할 수 있는 형식 필요

 

🤍 XML

XML : 마크업 언어, HTML과 같은 원리이며 동일한 태그가 사용됨

  • 각 항목은 해당 이름의 태그 사이에 정보가 들어 있는 형태로 구성되어 있음
  • 태그 안에 또다른 태그를 다층적으로 포함할 수도 있음

 

🤍 JSON

JSON : XML의 단점을 보완한 또다른 형식

  • XML 보다 구문이 간단하고 높은 가독성을 가지고 있음
  • 각 항목마다 따옴표가 붙고 그 뒤에 [대괄호]로 둘러싸인 배열, {중괄호}로 둘러싸인 또 다른 객체가 오는 식으로 정보 작성

 

🤍 YAML

YAML : 정보 인식을 위해 줄바꿈과 들여쓰기가 필수 문법 요소

  • 주로 프로그램 설정 파일과 같이 개발자가 편리하게 읽고 작성하기 위한 용도로 사용됨

 

🤍 AJAX

AJAX (Asynchronous JavaScript And Xml)  : 자바스크립트를 이용해 서버와 브라우저가 데이터를 교환할 수 있는 통신 기능

 

🩷 02-6 IP는 뭐고 HTTPS는 뭐죠?

🩵 IP 주소

IP 주소

  • 각 기기를 식별할 수 있는 특수한 번호
  • 기기 자체의 주소가 아니라 기기와 연결된 네트워크 끝 단의 주소
  • 통신을 위해 사용하는 식별 번호

IP (Internet Protocol) : 인터넷 상에서 데이터를 주고받기 위한 통신 규약

 

IPv4 : 0부터 255까지의 숫자가 네 마디로 구분되는 방식, 현재 주로 사용하는 방식

 

IPv6 : 0~F로 표현하는 16진수를 4자리 숫자 8개로 표현

 

🤍 공인 IP 주소

공인 IP 주소 : 지구상 어느 것과도 중복되지 않는 고유 IP 주소

  • 인터넷 서비스 제공업체에 의해 회사나 개인에게 부여됨
  • 다른 어떤 IP와도 중복되지 않기 때문에 웹사이트 같은 서버를 찾기 위한 용도로 사용
  • 외부에 공개된 주소이기 때문에 검색 엔진에서 IP를 검색해 확인할 수 있음

 

🤍 사설 IP 주소

사설 IP 주소 : IPv4 방식의 공인 IP 주소가 부족해지면서 기기에 서로 다른 주소를 할당할 수 없기 때문에 생긴 개념

  • 공인 IP를 공유한 기기에도 각각을 구분할 수 있는 주소
  • 로컬 IP, 가상 IP라고도 불림

 

🤍 고정 IP 주소

고정 IP 주소 : IP 주소가 영구적으로 할당되어 변경되지 않는 주소

  • 사용자나 기기에 IP를 고정적으로 부여하지 않고는 일정 주기마다 IP를 회수해서 필요한 곳에 다시 나눠주는 전략
  • 인터넷 사이트와 같이 변경되면 안 되는 사용처나 기기에 주로 사용
  • 기업이나 기관에서 서버 운영할 때 적

 

🤍 유동 IP 주소

유동 IP 주소 : 기기에 고정적으로 IP를 부여하지 않고 남아 있는 IP 주소를 골라 그때그때 기기에 할당하는 방법

  • 고정 IP 주소보다 저렴하게 이용 가능
  • 정기적으로 변동되기 때문에 고정 IP에 비해 보안측면에서도 유리
  • 일반적인 클라이언트 용도로 적합

 

🩵 도메인과 DNS

도메인 : 사람이 기억하기 쉽도록 문자로 만들어 특정 IP에 연결한 인터넷 주소

 

DNS : IP 주소와 이에 해당하는 도메인의 IP 정보를 갱신하며, 특정 도메인에 대한 요청이 들어오면 IP 주소를 찾아 알려주는 시스템

 

DNS에서 요청을 처리하는 순서

  1. 주소창에 URL을 입력하면 브라우저는 DNS에 IP 주소를 요청
  2. DNS는 해당 도메인에 맞는 IP 주소를 찾아 브라우저에 전달
  3. 브라우저는 해당하는 IP 주소의 웹 서버에 연결
 
URL
URL : 네트워크상에서 특정 자료가 어디에 있는가를 나타내는 주소
   웹사이트, 이미지, PDF, 파일, 자바스크립트나 CSS 문서 등의 다양한 자원을 열람하거나 다운로드할 수 있음

 

🩵 WWW, HTTP

통신 규약 : 어떤 종류의 통신이 이뤄질 것인가를 결정, https

호스트명 : www, mail, map, shopping 등 다른 호스트가 들어올 수 있음 

도메인 : 호스트명 바로 뒤에서 시작해 .com, co.kr, .edu 등으로 끝나는 주소

 

🤍 WWW

WWW : 월드 와이드 웹의 줄임말, 전 세계의 사람들이 정보를 공유하고 소통할 수 있는 인터넷 공간을 의미

  • WWW는 하이퍼텍스트를 지원하기 때문에 문서 활용에 엄청난 편리성 제공함
  • 인터넷에 제공되는 많은 서비스를 통합 접속하는 역할을 함
    • 기존 프로토콜과 서비스 제공
    • 인터넷에 존재하는 텍스트 형태의 문서, 그림, 음성 등 다양한 자료 또한 URL 형태인 인터넷 주소를 이용해서 하나의 문서로 관리 및 제공

하이퍼텍스트 : 꼭 전체 글자를 순서대로 읽지 않아도 되는 문서
한 문서에서 다른 문서로 즉시 접근할 수 있도록 비선형적으로 연결된 텍스트

 

🤍 HTTP

HTTP : 클라이언트의 요청과 서버의 응답으로 이뤄지는 통신규약을 나타냄, 네트워크로 이어진 두 컴퓨터가 어떤 종류의 소통을 할지 지정하는 것

 

HTTP는 서버와 클라이언트의 수가 많기 때문에 클라이언트가 요청을 두 번 보냈을 때 서버는 이 두 요청이 같은 클라이언트가 보낸 것을 알지 못함

 

웹사이트에서 세션이나 토큰을 사용해야만 로그인 상태를 유지할 수 있는 것은 웹사이트에서 사용하는 통신의 종류가 HTTP이기 때문이다. 이 HTTP의 한계를 극복하기 위해 브라우저에 쿠키로 세션 ID 또는 토큰을 담아 각 요청과 함께 반환해서 로그인 여부를 증명하는 것

 

단점

  • 요청과 응답 사이에 아무런 보안 장치 없이 데이터가 그대로 보내짐
  • 클라이언트와 서버가 HTTP로 주고받는 편지는 암호화되지 않은 평문이기 때문에 중간에 누군가 들여다보면 내용이 그대로 노출됨
  • 아이디와 패스워드를 입력하고 로그인 버튼을 눌렀을 때 이 정보를 서버로 보내는 편지가 탈취당하면 그대로 유출됨

스테이트리스 (stateless) : 어떤 공통된 상태 아리에 있지 않고 각각 개별적인 상태
스테이트풀 (stateful) : 전화 통화처럼 공통된 상태를 갖는 것

 

🩵 HTTPS

HTTPS : HTTP에 보안 기능을 추가해서 보다 안전하게 만든 통신 규약

 

원리 :

  • 도메인의 소유주는 CA라 불리는 인증기관 중 하나로부터 유로 또는 무료로 인증서를 발급받음
  • 인증서를 웹사이트에 적용하면 이후 서버는 클라이언트가 접속할 때 먼저 인증서를 제시
  • 브라우저에는 신뢰받는 CA 목록과 그들이 발급한 인증서를 판별할 수 있는 장치가 있음
  • 브라우저는 이 장치를 사용해서 인증서가 유효한지 확인
  • 인증서가 확인된 웹사이트는 주소창에 자물쇠 표시로 HTTPS를 사용하는 곳임을 나타냄
  • 클라이언트와 서버는 서로 비밀리에 약속된 방식을 통해 주고받는 내용을 암호화하고 해독
  • 클라이언트가 보낸 편지는 내용이 암호화되어 있기 때문에 탈취자가 열어 봐도 내용을 확인할 수 없음
  • 해독법을 아는 서버만 열어볼 수 있음
  • 서버가 클라이언트에 보내는 편지 또한 마찬가지로 해독법을 아는 클라이언트 외에는 내용을 확인할 수 없음

장점

  • 웹사이트 노출이 HTTP보다 유리함

검색 엔진 최적화 (SEO) : 검색 엔진의 검색 결과에 보다 많이, 보다 상위권에 나타나도록 여러 설정을 함

 

🩵 요청 메소드와 응답 코드

🤍 요청 메소드

  • GET
    • 서버에 HTML 등 문서나 이미지, 기타 각종 데이터를 요청
    • 브라우저에서 웹사이트에 접속할 때 보내는 요청
    • API에서도 서버로부터 데이터를 가져오기 위해 사용
  • POST
    • 서버에 새로 저장될 자료를 보냄
    • 게시판이나 SNS에 새 게시물을 작성할 때 사용
  • PUT
    • 특정 데이터 전체를 새로 저장
    • 게시판의 게시물을 수정할 때 사용
  • PATCH
    • 특정 데이터를 일부만 수정
    • 게시물의 조회수나 좋아요 수를 올릴 때 등에 사용
  • DELETE
    • SNS 게시물 등 특정 데이터를 삭제
  • OPTIONS
    • 해당 URL이 어떤 메소드를 허용하는지 물어보기 위해 사용

 

🤍 응답코드

서버의 응답에는 세 자리 숫자 형식을 가진 응답코드가 찍힘

  • 1XX
    • 요청을 성공적으로 받았으며 서버가 해당 작업을 진행 중
  • 2XX
    • 요청을 성공적으로 받았으며 요청이 이루어짐
    • < 자주 사용되는 코드 >
      • 200 : 요청이 성공적으로 처리됨, 가장 흔히 사용
      • 204 : 성공적으로 처리되었지만, 답장에 적어 보낼 내용은 없음
      • 206 : 요청에서 지정한 대로, 일부 콘텐츠만 보냄
  • 3XX
    • 요청을 수행하기 위해 해당 요청을 다른 주소로 보내는 등 추가 조치가 필요, 자료의 위치가 변경되어 새 URL로 자동 이동시켜줄 때 사용함
  • 4XX
    • 클라이언트 요청에 문제가 있기 때문에 수행할 수 없음
    • < 자주 사용되는 코드 >
      • 401 : Unauthorized : 로그인이 필요한 요청인데 로그인되어 있지 않음
      • 403 : Forbidden : 로그인되어 있지만 요청을 보낼 권한이 없음
      • 404 : Not Found : 요청에 해당하는 데이터가 없음 또는 URL이 잘못되었을 때 나타남
  • 5XX
    • 요청에는 문제가 없지만, 서버에 이상이 있어 응답할 수 없음
    • < 자주 사용되는 코드 >
      • 500 : 서버 내부에 오류 발생
      • 502 : 서버 과부하 또는 기타 네트워크 문제로 통신이 제대로 되지 않음

 

 

🩷 02-7 디지털 시대, 데이터와 데이터베이스의 이해

🩵 데이터와 데이터베이스

데이터 : 어떤 의미나 목적 없이 단순히 수집된 순수한 '자료'

정보 : 데이터가 모여서 의도나 목적에 따라 분석되어 의미가 부여된 것

지식 : 정보 간 관계를 통해 가치를 찾는 것

데이터베이스

  • 데이터 (data)의 기지 (base) 라는 단어로 구성되어 있음
  • 많은 양의 데이터를 한데 모아 놓은 곳
  • 소프트웨어를 통해 데이터를 저장하고 읽고 수정하거나 삭제할 수 있는 형태의 데이터 집합

🩵 DBMS

데이터베이스 관리 시스템 (DBMS : DataBase Management System) : 데이터베이스 관리 전문적 프로그램

DBMS의 기능

  • 특정 데이터를 저장, 조회, 삭제, 수정
  • 데이터가 중복되거나 잘못된 형식으로 저장되는 것을 방지
  • 외부의 접근을 통제하고 사용자마다 권한을 지정해서 보안 유지
  • 허용된 사용자가 원하는 대로 데이터를 살펴보고 조작할 수 있도록 여러 가지 인터페이스 제공

🩵 관계형 데이터베이스

관계형 데이터베이스 (RDBMS : Relational Database Management System) : 관계형 데이터베이스 관리 시스템

관계형 데이터베이스 특징

  • 테이블 (표) 에 데이터를 저장하는 방식으로 데이터베이스 관리
  • 테이블은 열과 행으로 이루어져 있음
  • 열에는 형식을 미리 설정하기 때문에 잘못된 데이터가 입력되는 것을 방지함
  • 각각 나누어진 테이블을 열의 관계에 따라 하나로 합쳐서 조회할 수 있는 조인 (join) 기능 제공
  • 데이터를 효율적이고 안정적으로 관리하는 동시에 편리하게 활용 가능

⭐ 관계형 데이터베이스는 테이블을 분할해서 데이터를 입력하는 방법 제공

 

🤍 오라클 데이터베이스

오라클 데이터베이스 : 대형 기업 사이에서 가장 널리 사용되는 관계형 데이터베이스

  • 미국의 거대 IT 기업인 오라클에서 만든 제품
  • 은행이나 대기업에서 사용할 만큼 강력한 기능과 안정성 자랑
  • 다양한 운영체제에서 운영 가능

 

🤍 MySQL

MySQL : 오라클과 점유율 1, 2위를 다투는 관계형 데이터베이스

  • 스타트업이나 소기업에서 또는 개인 용도로 사용
  • 소스 코드가 공개된 오픈 소스 제품

 

🤍 마이크로소프트 SQL 서버

마이크로소프트 SQL 서버 : MSSQL이라고도 불리며, 마이크로소프트에서 만든 제품

  • 윈도우 서버에서만 구동 가능
  • C#과 높은 호환성을 가짐

 

🤍 PostgreSQL

PostgreSQL : 무료로 사용할 수 있는 오픈소스 데이터베이스

  • 다양한 데이터 타입 지원
  • 객체지향 프로그램을 적용할 수 있음

 

🤍 MariaDB

MariaDB : 오픈 소스 무료 데이터베이스

  • MySQL과 높은 호환성 가지고 있음

 

🤍 SQLite

SQLite : 서버가 아닌 클라이언트에서 작동하는 용도로 만들어짐

  • 안드로이드와 IOS에 포함되어 있음
  • 응용 프로그램 실행에 필요한 데이터를 기기 내에서 관리하는데 사용됨

 

🩵 SQL

SQL (구조화 질의 언어, Structured Query Lanauage) : 관계형 데이터베이스에 작업을 지시하기 위해 사용되는 언어

  • 구문이 영어 문장과 같은 구조로 되어 있어 비교적 직관적으로 명령의 의미를 파악할 수 있음
  • 프로그램에 필요한 모든 데이터 작업을 RDBMS에 요청할 수 있음

 

🩵 NoSQL

NoSQL : 관계형을 제외한 모델을 사용하는 DBMS를 가리키는 용어

 

🤍 문서 데이터베이스

문서 데이터베이스 : 데이터를 문서의 형태로 저장

  • 각 데이터를 XML이나 JSON과 비슷한 형태의 문서로 저장
  • 데이터마다 동일한 항목 가질 필요 X
  • 유연성이 강점으로 작용하는 곳에서 유용하게 사용할 수 있음
  • 대표적으로 MongoDB와 CouchDB가 있음

 

🤍 키-값 데이터베이스

키-값 데이터베이스 : 키와 값의 쌍만을 저장하는 단순한 형태의 데이터베이스

  • 실행 속도 빠르며, 용량 부족 시 다른 서버와의 분담이 용인한 수평 확장성 갖고 있음
  • 대표적으로 레디으와 아마존 다이나모 DB, 맴캐시드 등이 있음

 

🤍 그래프 데이터베이스

그래프 데이터베이스 : 각 구성원을 뜻하는 여러 노드 (node) 와 그들 간의 관례를 뜻하는 엣지 (edge) 로 구성된 자료구조

  • 노드의 정보인 프로퍼티 (property) 를 더해서 데이터를 저장
  • 대표적으로 Neo4j, JanusGraph 등이 있음

 

🩷 02-8 개발자들은 왜 리눅스를 좋아하나요?

🩵 운영체제

운영체제 (OS) : CPU, 메모리, 그래픽 카드 등의 기기를 가동하고 제어해서 사용자가 컴퓨터로 각종 작업을 할 수 있는 환경 마련

  • PC용으로 사용되는 운영체제
    • 마이크로소프트의 윈도우
    • 애플의 맥OS
    • 리눅스
  • 모바일용으로 사용되는 운영체제
    • 구글에서 만드는 안드로이드
    • 애플의 IOS
  • 스마트워치용 운영체제
    • WearOs
    • WatchOS
  • 초소형 컴퓨터 운영체제
    • 라즈베리 파이 OS

 

🩵 GUI vs CLI


인터페이스란?
인터페이스 : 두 개 이상의 시스템이나 장치가 상호 작용할 수 있는 접점
사용자 인터페이스 : 사람과 사물 또는 프로그램 사이에서 의사소통할 수 있도록 돕는 것

 

🤍 GUI

GUI (Graphic User Interface) : 그래픽으로 구성된 사용자 인터페이스

  • 그래픽 요소들을 사용해서 사용자와 상호 작용하는 것을 의미
  • 아이콘, 툴바, 버튼, 메뉴창, 탐색기나 파인더처럼 직관적이고 알기 쉬운 그림 요소로 구성되어 있음
  • 1981년 제록스에서 처음 마우스를 활용한 GUI를 만듬
  • 애플에서 GUI를 적극 활용하면서 컴퓨터의 대중화에 크게 기여함

🤍 CLI

CLI (Command Line Interpreter) : 명령어 줄을 입력해서 사용할 수 있는 인터페이스

  • 환경에 따른 기본 명령어를 알고 있어야 하기 때문에 진입 장벽 높음
  • 명령 프롬포트가 CLI의 대표적인 예시

개발자들이 CLI 방법을 많이 사용하는 이유

  • CLI 환경이 컴퓨터 자원을 덜 소모
    • 백엔드에서 작동하는 서버처럼 사용의 편리성보다 성능을 우선하는 환경에서는 CLI만 갖춘 운영체제를 설치하는 것이 합리적인 선택임
  • CLI 환경이 간편하고 정확
    • 반복되는 작업을 일정한 방법으로 진행하는 데는 CLI가 오히려 간편하고 정확함
    • 폴더 안의 파일을 옮겨 수정하는 과정에서 명령어들을 한번에 입력하는 것이 가능
    • 개발과정에 수반되는 여러 반복 작업을 자동화하고 조작상의 실수도 방지할 수 있음
  • 네트워크 환경에서는 GUI보다 CLI가 더 적합
    • CLI를 사용하면 명령어를 입력하고 결과를 전송받는 방식으로 가볍고 안정적으로 서버를 다룰 수 있음

 

🩵 리눅스

리눅스 : 오픈 소스

오픈소스 : 소프트웨어의 소스 코드가 공개되어 있는 것

윈도우나 맥OS의 운영체제를 사용하려면 값을 지불해야하지만, 리눅스는 레드햇을 제외한 거의 모든 버전을 무료로 사용할 수 있음

 

  • 전 세계의 개발자와 전문가가 오픈 소스 커뮤니티에서 논의하고 함께 개발하는 주제이기 때문에 안정적으로 작동함
  • 필요와 용도에 따라 기존 리눅스를 개량에서 새 버전을 만들어 공개하기도 함

리눅스 배포판 : 리눅스를 커널과 함께 운영체제의 목적에 맞는 여러 프로그램을 패키징 해서 제공

 

  • 클라이언트 컴퓨터, 서버, IoT 기기 등 다양한 버전으로 개발되어 사용됨

 

🤍 우분투

우분투 : 현재 가장 많이 사용되는 리눅스 버전

  • GUI를 탑재한 데스크톱 (클라이언트) 용과 CLI로 동작하는 서버용으로 제공됨
  • 리눅스 초보 사용자에게 인기 있음
  • 서버용 우분투 또한 빠른 업데이트와 패키지 (프로그램) 설치의 용이함 등으로 많은 개발자가 선호하는 운영체제

 

🤍 레드햇 엔터프라이즈 리눅스

레드햇 리눅스 : 레드햇에서 개발한 유료 운영체제, 개발을 위한 여러 가지 도구 및 기술 지원을 제공

  • 비용이 많이 발생하지만 그만큼 안정성을 보장받을 수 있음
  • 일정 규모가 있는 기업에서 많이 사용함

 

🤍 센트OS와 로키 리눅스

센트OS : 레드햇 리눅스 (RHEL) 를 기술 지원 없이 무료로 배포한 버전

로키 리눅스 : RHEL을 기반으로 한 센트OS를 대신할 OS

 

🤍 리눅스 민트

리눅스 민트 : 우분투 리눅스에서 파생한 배포판

  • 화면 디자인 및 사용자 편의성을 개선한 운영체제

 

🤍 라즈베리 파이

라즈베리 파이 : 데비안 계열의 오픈 소스 운영체제

  • 하드웨어에 최적화된 운영체제
  • 데비안 패키지의 안정성과 성능을 가벼운 용량으로 사용할 수 있음

 

🤍 만자로 리눅스

만자로 리눅스 : 쉽게 배우고 사용할 수 있는 인터페이스, 디자인, 패캐지 설치의 용이성으로 큰 인기

  • 기본적인 틀만 있는 상태에서 본인만의 운영체제 만들 수 있음

 

🩵 커널

커널 : 운영체제의 핵심 기능을 담당하는 핵심 요소

  • 하드웨어와 응용 프로그램 사이에서 작동하며 컴퓨터에서 일어나는 모든 일을 통제
  • 여러 프로그램을 원활히 사용할 수 있도록 작업 간 우선순위를 정해서 컴퓨터 자원을 효율적으로 분배
  • 메모리가 어떤 작업에 얼마나 할당되는지, 어떤 프로그램이 CPU를 얼마나 오래 점유하는 지 등을 끊임없이 추적하며 컴퓨터가 안정적으로 작동할 수 있도록 관리함

🩵 오픈소스

오픈소스 : 누구나 소스 코드를 볼 수 있고 개발에 참여할 수 있는 소프트웨어

profile

에뛰드 블로그

@MISU 미수

매일매일 1px씩 성장하는 개발자입니다! 성장하면서 알게 된 저의 지식을 공유하고 성장하기 위한 블로그입니다

검색 태그