본문 바로가기

TIL

[TIL] 210810

1. MySQL
2. 클라우드 컴퓨팅 / AWS
3. Docker

MySQL

MySQL 역사

  • 1995년 스웨덴 회사였던 MySQL AB에 의해 개발된 관계형 데이터베이스
    • 오픈소스로 시작됨
    • My는 개발자 중 한 사람의 딸의 이름이었음
  • 2008년 썬 마이크로시스템가 MySQL AB를 인수
  • 2009년 오라클이 썬을 인수하면서 Java, MySQL의 소유권을 가지게 되었는데, Mysql이 유료화 될 수도 있다는 여부가 생김
  • 2010년 MySQL의 처음 개발자였던 Monty가 MySQL과 호환이 되는 MariaDB라는 오픈소스 개발
  • 현재 Mysql은 무료, 유료버전이 있음

MySQL 종류와 버전

  • MariaDB
    •  오픈 소스로 무료
    • MySQL 5.5에 기반해서 개발됨 << 오라클이 사기 직전 마지막 버전임
    • MySQL과 인터페이스는 동일하나 성능은 더 좋음
  • MySQL
    • 두 가지 종류가 존재
    • MySQL Community Server: 오픈소스로 무료
    • MySQL Enterprise Server: 유료 버전으로 다양한 플러그인 제공

MySQL 특징

LAMP : 한동안 표준처럼 사용되던 웹개발 표준 기술 스펙 (Linux, Apache, Mysql, PHP)

  <- 지금도 프로덕션용 관계형 데이터베이스로 많이 쓰임

여러 서버에 분산해서 동작하지 못함.

데이터 용량 이슈가 생길 때 사용하는 Scaling 방식( 용량 증대 방식 )은?

Scale-Up : 서버에 CUP와 Memory 추가

Scale-Out : Master-Slave 구성

  • 일반적으로는 클러스터 구성을 하지만 Mysql은 지원하지 못함
  • 기본이 되는 master가 있고, 이 데이터가 읽기전용으로 계속 복사가 됨. 그래서 읽을 일이 있을 때는 slave를 읽음. <-- 읽기 같은 경우만은 빠른 속도를 제공해줌
  • 저장하는 크기는 커지지 못하고 master 용량 그대로이지만 읽기용량은 키워줌

클라우드/AWS 소개

클라우드란?

  • 컴퓨팅 자원(하드웨어, 소프트웨어 등등)을 네트웍을 통해 서비스 형태로 제공
  • 키워드:
    • "No Provisioning"
    • "Pay As You Go"
  • 자원(예를 들면 서버)을 필요한만큼 (거의) 실시간으로 할당하여 사용한큼 지불하기 때문에 탄력적으로 필요한만큼의 자원을 유지하는 것이 중요

클라우드 컴퓨팅의 장점

  • 초기 투자 비용이 크게 줄어듬
    • CAPEX (Capital Expenditure) vs. OPEX (Operating Expense)
      • CAPEX : 초기투자를 해서 비용이 발생하는 것 (직접 데이터 센터를 구축)
      • OPEX : 매달 비용 형태로 나가는 것(클라우드 컴퓨팅 사용)
  • 리소스 준비를 위한 대기시간 대폭 감소(Shorter Time to Market)
  • 노는 리소스 제거로 비용 감소
  • 글로벌 확장 용이
  • 소프트웨어 개발 시간 단축
    • Managed Service (SaaS) 이용

AWS 소개

  • 가장 큰 클라우드 컴퓨팅 서비스 업체.
  • 2002년 아마존의 상품데이터를 API로 제공하면서 시작
    • 현재 100여개의 서비스를 전세계 15개의 지역에서 제공
    • 대부분의 서비스들이 오픈소스 프로젝트들을 기반으로 함.
  • 사용고객
    • 다수의 상장업체들과 많은 국내 업체들도 사용시작 (서울 리전)
  • 다양한 종류의 소프트웨어/플랫폼 서비스를 제공.
    • AWS의 서비스만으로 쉽게 온라인서비스 생성.
    • 뒤에서 일부 서비스를 따로 설명.

이커머스를 운영할 때 데이터 센터 자원의 크기를 Peak time 기준으로 잡는데, 아마존에서 이커머스를 운영할 때 용량 planning을 블랙프라이데이 같은 때를 기준으로 하게 됨. 그 이외에 날에는 서버가 놀게 되고, 남는 서버를 다른 사람들에게 빌려주는 걸로 AWS가 시작되었다.

EC2

  • AWS의 서버 호스팅 서비스.
    • 리눅스 혹은 윈도우 서버를 론치하고 로그인 가능 (구글앱엔진과의 가장 큰
      차이점).
    • 가상 서버들이라 전용서버에 비해 성능이 떨어짐.
    • Bare-metal 서버도 제공하기 시작

요금

On-Demand : 시간당 비용을 지불되며 가장 흔히 사용하는 옵션. 가장 많이 사용되는 옵션
Reserved : 1년이나 3년간 사용을 보장하고 1/3 정도에서 40% 디스카운트를 받는 옵션
Spot Instance : 일종의 경매방식으로 놀고 있는 리소스들을 보다 싼 비용으로 사용할 수 있는 옵션

S3

  • 아마존이 제공하는 대용량 클라우드 스토리지 서비스
  • S3는 데이터 저장관리를 위해 계층적 구조를 제공
  • 글로벌 내임스페이스를 제공하기 때문에 톱레벨 디렉토리 이름 선정에 주의.
  • S3에서는 디렉토리를 버킷(Bucket)이라고 부름
  • 버킷이나 파일별로 액세스 컨트롤 가능

Database Server

  • RDS (Relational Database Service)
    • MySQL/MariaDB, PostgreSQL, Aurora
    • Oracle, MS SQL Server
  • DynamoDB
  • Redshift
  • ElastiCache
  • Neptune (Graph database)
  • ElasticSearch
  • MongoDB

AI & ML Service

  • SageMaker : 딥러닝 모델을 end to end로 지원 줌
  • Lex : Conversational Interface (Chatbot service)
  • Polly : Text to Speech Engine
  • Rekognition : Image Recognition Service

  •  

Docker

Docker란?

  • 프로그램을 설치할 때 이미 설치한 프로그램과 충돌이 나는 경우도 있고, OS에 따라서 설정하는 방법이 다른 경우도 있다. 또는 현재 컴퓨터에서는 동작하지만 다른 컴퓨터에서는 동작하지 않는 경우도 있다.
  • 이런 SW 설치를 수월하게 해주는 프로그램이 Docker이다.
  • Docker는 특정 프로그램과 (그 프로그램을 실행하는데) 필요한 기타 소프트웨어들을 하나의 패키지로 만듬으로써 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼이다
    • Docker Image : 패키지를 파일 시스템 형태로 구성
      • Image는 공유 가능하다.
    • Docker Registry : Docker Image 공유소(대표적으로 Docker Hub가 있음)
    • Docker Container : Docker Image를 실행시키는 것.

Docker 구조

(출처 : https://www.hanumoka.net/2018/11/16/docker-20181116-docker-docker-basic/ )

  • Docker 위에서 돌고있는 SW는 컴퓨터 운영체제에 깔린 프로그램들과 별개의 것으로 충돌이 나지 않음. 가상의 시스템이 생기는 것이다.(가상의 컴퓨터와 유사하지만 구현 방법은 다름)
  • Docker Container는 여러개가 돌 수도 있음(컴퓨터의 사양에 따라서)

 

'TIL' 카테고리의 다른 글

[TIL] 220112  (0) 2022.01.12
[TIL] 210929  (0) 2021.10.01
[TIL] 210809  (0) 2021.08.10
[TIL] 210806  (0) 2021.08.09
[TIL] 210805  (0) 2021.08.06