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 : 매달 비용 형태로 나가는 것(클라우드 컴퓨팅 사용)
- CAPEX (Capital Expenditure) vs. OPEX (Operating Expense)
- 리소스 준비를 위한 대기시간 대폭 감소(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 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 |