백엔드 데브코스 TIL 07일차

Inchang Choi·2022년 3월 31일
0
post-thumbnail

학습목표

강의를 들으며 내가 알고 있는 내용을 점검하고,

새로 배운 내용을 정리하며,

궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.


MySQL

가장 대중적인 관계형 데이터베이스 중 하나인 MySQL에 대해 알아봅시다!

MySQL의 역사

MySQL은 스웨덴 회사였던 MySQL AB에 의해 1995년 개발된 오픈소스 관계형 데이터베이스입니다.

2008년 썬 마이크로 시스템이 인수, 그 후 2009년 오라클이 썬을 인수하며 유료화 여부가 쟁점이 되었습니다.

2010년 MySQL의 처음 개발자였던 Monty가 MySQL과 호환이 되는 MariaDB라는 오픈 소스를 개발합니다.

MySQL의 특징

한동안 웹 개발 표준 기술 스택 LAMP중 하나였고, 지금도 Postgres와 함께 가장 널리 쓰이는 관계형 데이터베이스입니다. 서버 한대로 데이터베이스를 구성하는 특징이 있습니다.

용량 증대 방식(Scaling) 방식

  • Scale-up 서버에 CPU와 Memory 추가하는 방법입니다. 그러나 물리적인 업그레이드는 한계가 있습니다.
  • Scale-out 일반적으로 클러스터 구성을 말하나 MySQL은 이를 지원하지 못합니다. Master-Slave 구성으로 읽기 전용의 Slave를 복사합니다.

클라우드

클라우드란? 컴퓨팅 자원(하드웨어와 소프트웨어 등등)을 네트워크를 통해 서비스 형태로 제공하는 것!

자원을 필요한만큼 실시간으로 할당하고 사용한 만큼 사용자가 지불하는 방식입니다.

그렇기 때문에 사용자는 탄력적으로 필요한만큼만 자원을 유지하는 것이 중요합니다.

서버, 네트워크, 스토리지 구매와 설정을 직접 수행해야하고 데이터센터 공간을 직접 확보해야합니다.

확장이 필요할 경우 공간을 추가로 확보해야할 수도 있습니다.

그 공간에 서버를 구매하여 설치하고 네트워크 설정을 진행해야하고 peak time을 기준으로 capacity planning을 해야합니다.

클라우드 컴퓨팅의 장점

  • 클라우드 컴퓨팅은 위와 같은 초기 투자 비용이 크게 줄어듭니다.
  • 리소스 준비를 위한 대기시간 감소
  • 노는 리소스 제거로 비용 감소
  • 글로벌 확장 용이
  • 소프트웨어 개발 시간 단축
    • Managed Service (Saas)

AWS

대표적인 클라우딩 컴퓨팅 서비스 업체로 AWS(Amazon Web Service)가 있습니다.

AWS는 2002년 아마존 상품데이터를 API로 제공하면서 시작되었습니다.

AWS 특징

  • 100여개 서비스를 전 세계 15개의 지역에서 제공
  • 오픈소스 프로젝트를 기반으로 함.
  • ML / AI 서비스도 제공 중
  • AWS의 서비스만으로 쉽게 온라인 서비스 생성가능.

EC2

AWS의 서버 호스팅 서비스

  • 리눅스나 윈도우 서버를 런치하고 로그인 가능합니다.
  • 가상 서버들이라 전용 서버에 비해 성능이 떨어집니다.
  • bare-metal 서버도 제공하기 시작
  • 다양한 종류의 서버 타입 제공
  • 다양한 구매옵션
    • On-Demand : 시간당 비용
    • Reserved : 1년이나 3년 사용을 보장하고 1/3에서 40%정도 할인 받는 옵션
    • Spot Instance : 경매방식으로 놀고 있는 리소스들을 싼 비용으로 사용할 수 있는 옵션

S3 (Simple Storage Service)

AWS의 대용량 클라우드 스토리지 서비스

  • 계층적 구조를 제공
  • 디렉토리를 버킷이라고 부름
  • 버킷이나 파일별로 액세스 컨트롤 가능

docker

소프트웨어를 다른 OS에 설치하려면 다양한 변수가 존재합니다.

설치 과정이 운영체제의 버전이나 종류에 따라 달라지게 되는 것입니다.

또 설치 과정에서 다양한 다수의 다른 소프트웨어의 설치가 동반되는 것이 일반적입니다.

docker란?

docker는 특정 프로그램과 그 프로그램을 실행하는데 필요한 소프트웨어들을

하나의 패키지로 만들어 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼입니다.

  1. 이 패키지를 먼저 파일 시스템 형태로 만드는데 이를 docker Image라고 합니다.
  2. Image는 다른 사람과 공유가 가능하며 이런 이미지를 공유하는 곳을 docker Registry(Docker Hub)라 부릅니다.
  3. docker Image를 실행시킨 것을 docker Container라고 부르며 응용 프로그램에 해당 됩니다.

Containerization

도커 엔진위에 컨테이너들을 올려서 일종의 가상환경과 비슷하게 구현합니다.

[M1 MAC] M1 Mac에서 docker로 mysql 설치하기

관계형 데이터베이스 예제

웹 서비스 사용자 / 세션 정보

  • 사용자 ID : 웹서비스에는 등록된 사용자마다 부여하는 유일한 ID
  • 세션 ID : 세션마다 부여되는 ID
    • 세션 : 사용자의 방문을 논리적인 단위로 나눈 것
    • 구글 analytics 기준
      • 사용자가 외부링크(광고)를 타고 오거나 직접 방문해서 올 경우 세션 생성합니다.
      • 사용자가 방문후 30분간 interaction이 없거나 뭔가를 하는 경우 새로 세션을 생성합니다.
    • 즉 하나의 사용자는 여러개의 세션을 가질 수 있습니다.
    • 세션은 세션을 만들어낸 경유지를 채널이라는 이름으로 기록합니다.
    • 세션이 생긴 시간도 기록합니다.
  • 이 정보를 기반으로 데이터 분석과 지표 설정이 가능합니다.

테이블 필드의 중요 속성

  • PRIMARY KEY
    • 테이블에서 레코드의 유일성을 정의하는 필드
    • composite primary key : primary key가 두 개 혹은 그 이상으로 정의되는 경우
    • Primary key로 지정된 필드가 있는 경우 데이터베이스단에서 중복된 값을 갖는 레코드가 생기는 것을 방지함. (primary key uniqueness constraint)
  • Foreign Key
    • 테이블의 특정 필드가 다른 테이블의 필드에서 오는 값을 갖는 경우
  • NOT NULL
    • 필드의 값이 항상 존재해야하는 경우 사용할 수 있습니다.
  • DEFAULT VALUE
    • timestamp : CURRENT_TIMESTAMP

SQL DDL 예제

CREATE TABLE channel (
	id int not null auto_increment,
	channel varchar(32) not null
	primary key(id)
);

primary key를 마지막에 설정할 경우 composite primary key 형태로 사용 가능합니다.

CREATE TABLE session (
	id int not null auto_increment primary key,
	user_id int not null,
	create timestamp not null default current_timestamp,
	channel id int not null,
	foreign key(channel_id) references channel(id)
)
profile
always positive

0개의 댓글