카테고리 없음

머신러닝 4th

https.. 2024. 12. 9. 10:19

로이터 뉴스 카테고리 분류(RNN)
문장을 학습시킨다는 것은 여러 개의 데이터가 순서 관계없이 입력되는 것과 다르게 과거에 입력된 데이터가 나중에 입력된 데이터 사이의 관계를 고려해야 한다.
ㅡㅡ
RNN은 여러 개의 데이터가 순서대로 입력되었을 때, 앞서 입력받은 데이터를 잠시 기억해 놓는 방법

기억해 놓은 데이터가 얼마나 중요한지 판단하고 별도의 가중치를 주어 다음으로 넘어감

ai 입장에서, 가면 갈수록 값이 작아지기 때문에, 다음으로 넘길 때 버릴지 남길지 판단하는 것이 존재해야 함 -> 그래서 LSTM 등장

모든 입력값에 이 작업을 순서대로 실행하므로, 다음 층으로 넘어가기 전에 같은 층을 맴도는 것처럼 보임
ㅡㅡ

LSTM은 내가 가져가야 하는 텀인지 버려야 하는 텀인지 저장시켜 놓는 방법

LSTM은 한 층 안에서 반복을 많이 하는 RNN 특성상, 일반신경망보다 기울기 소실 문제가 많이 발생하고 이를 해결하기 어렵다는 단점을 보완하는 방법

핵심은 다음 층으로 넘길 때 기억된 값을 그냥 더 큰 값으로 보낼지 버릴지 한 번 더 가공해서 보내는 것

즉, 반복되기 직전에 기억된 값을 다음 층으로 넘길 때 버릴지 남길지 여부를 관리하는 단계가 하나 더 추가
ㅡㅡ

# 로이터 뉴스 카테고리 분류 (LSTM)
# 1. 모델 생성
(X_train, y_train), (X_test, y_test) = reuters.load_data(num_words=1000, test_split=0.2)

# 데이터 확인, 이미 토큰화 및 원핫인코딩이 되어 있음
print('학습용/테스트용 숫자: ', len(X_train), len(X_test))
print('첫 번째 훈련용 기사: ', X_train[0]))
print('전체 카테고리 개수: ', np.max(y_train)+1, '개 중 첫 번째 카테고리는 ', y_train[0])

# 단어의 수를 padding으로 맞춰줌(토큰 개수 맞춤)
X_train = sequence.pad_sequences(X_train, maxlen=100)
X_test = sequence.pad_sequences(X_test, maxlen=100)

# 원핫 인코딩 처리
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# 2. 모델 구조 생성
model = Sequential()
model.add(Embedding(1000, 100))
model.add(LSTM(100, activation = 'tanh'))
model.add(Dense(46, activation = 'softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# 학습 조기 종료
early_stopping_callback = EarlyStopping(monitor='val_loss', patience=5)

# 3. 모델 학습
history = model.fit(X_train, y_train, batch_size20, epochs=200, validation_data(X_test, y_test), callbacks=[# 학습 조기 종료
early_stopping_callback])

# 학습셋과 테스트셋의 오차 저장
y_vloss = history.history['val_loss']
y_loss = history.history['loss']

# 그래프로 표현
x_len = np.arange(len(y_loss))
plt.plot(x_len, y_vloss, marker=',', c='red', label='Testset_loss')
plt.plot(x_len, y_loss, marker=',', c='blue', label='Trainset_loss')

plt.legend(loc='upper right')
plt.grid()
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()


ㅡㅡ
Attention
인코더 디코더 두 단계 거침
ai 입장에서 인코딩은 들어오는 데이터를 Context Vector 형태로 만드는 것
그리고 디코딩 단계에서 이 Context Vector를 해석해서 결과 나옴
기존 RNN과 다른 점은
Context Vector 만드는 과정과 이를 풀어내는 방법

기존 RNN
여러 데이터가 입력되면 바로 처리하지 않고 잠시 가지고 있음
연관성이 있다면 이를 모두 받아둬야 적절한 출력값을 만들 수 있음
인코더에 입력된 셀 값을 하나씩 뒤로 보내다가 맨 마지막 셀이 이 값을 디코더에 전달하는 것

그런데 입력이 너무 길어지면 입력받는 셀의 결과들이 너무 많아짐
즉 입력이 길면 선두에서 전달받은 결과값이 중간에 희미해지기도 하고 Context Vector 가 모든 값을 제대로 디코더에 전달하기 어려워짐

Attention
입력이 길면 품질이 떨어지는 문제를 보완하기 위해 제안된 기법
인코더 단계에서 Context Vector 을 각각이 들어가게 만듦
나는
나는 학생
나는 학생 입니다
이런식으로 오는대로 실시간 전달하는 것

디코더에서 단어를 출력할 때마다 입력 시퀀스를 한 번씩 참고하는 것
ex 널 을 예측하기 위해 i love you를 한 번씩 참고해서 연관성이 있는 단어가 있는지 집중(attention)
이때 내적(inner product)이용
두 벡터 간 유사도 보는 것

인코더 디코더 사이에 하나의 층이 추가됨
이 층에 활성화함수 이용해서 attention 가중치 생성함
이 가중치를 활용해 입력값 중 어떤 셀을 집중적으로 볼 지 결정
ㅡㅡ
어텐션코드
ㅡㅡ
클라우드 컴퓨팅이 웹 호스팅과 다른 점
1) 사용자의 필요에 따라 컴퓨팅 능력을 필요한 만큼 활용 가능하다
2) 이용자가 사용하고 싶은 만큼 활용 가능하다
3) 서비스를 제공 업체에서 전부 관리한다
ㅡㅡ
클라우드 컴퓨팅 개요
클라우드 컴퓨팅이란 인터넷상의 서버를 통해 IT 관련 서비스를 활용하여 시간과 장소 제약 없이 컴퓨팅 자원을 사용하는 방식이다

구름과 같이 무형의 형태로 존재하는 컴퓨팅 자원을 사용자가 필요한 만큼 사용하고 그에 따른 사용요금을 지급하는 방식이다. 서로 다른 물리적 위치에 존재하는 컴퓨팅 자원을 가상화 기술을 통합해 사용한다.
ㅡㅡ
클라우드 컴퓨팅 배경
1) 다양한 기술의 발전. CPU의 처리 속도 고속화
2) 가상화, 분산처리 기술 발전
3) 모바일 성장의 시작과 저렴해진 네트워크
즉, 거대해진 데이터 센터에 의한 규모의 경제로 클라우드 등장 환경이 조성되었음

클라우드 사업자와 기업 이용자 모두 클라우드 받아들일 환경이 조성됨

기업 사용자에게는 IT 투자 자원 절감, 구축 및 운용 비용 절감, 유연한 시스템 설계와 이용 등이 과제가 되고 있으며 이를 클라우드를 통해 해결

클라우드 사업자는 기업 사용자에게 셀프서비스의 형태로 제공하므로 서비스 제공이 효율적, 지속적인 매출 올릴 수 있는 안정적인 수익원 될 수 있음

기업이 클라우드를 이용할 경우, 회사 안에 구축된 시스템에서 처리하는 것이 아니라 클라우드 사업자의 데이터센터 안의 시스템에서 처리
즉 IT자원을 소유하는 것이 아니라 이용하는 것
ㅡㅡ
클라우드 컴퓨팅의 중요성
인공지능과 빅데이터의 중요성이 커짐에 따라 클라우드가 4차 산업혁명의 기초 인프라로 부각됨
즉 방대한 컴퓨터 자원과 ai 개발을 위한 슈퍼 컴퓨터를 개별 기업이 구매하는 것은 비현실적임
자본이 부족한 기업은 클라우드를 통해 4차 산업혁명 실현을 위한 대규모 컴퓨팅 자원을 저렴하게 사용 가능
ㅡㅡ
특징
주광리신측
주문형 셀프시스템: 사업자와 상호작용 하지 않고 사용자가 개별 관리화면을 통해 서비스 이용
광범위한 네트워크 접속: 다양한 디바이스에서 이용이 가능
리소스 공유: 사업자의 컴퓨팅 리소스를 여러 사람이 공유하는 형태로 사용. 사용자는 자신이 이용하는 리소스의 정확한 위치를 알 수 없음
신속한 확장성: 필요에 따라 필요한 만큼 스케일 업/다운이 가능
측정 가능한 서비스: 이용한만큼 요금이 부과됨
ㅡㅡ
장점
자체 시스템을 구축하는 방식(온프레미스)와 비교했을 때 장점
1 경제성
자체 시스템을 구축하는 경우, 피크타임 이용량을 예상하여 h/w, s/w를 구매해야 함
하지만, 클라우드의 경우, h/w, s/w 구매하지 않고, 사용하고자하는만큼 사용하고자하는시간에 컴퓨팅 자원 이용 가능?
s/w와 데이터를 클라우드를 통해 통합 관리함으로써, s/w 업데이트 및 데이터 유지보수의 효율성을 높이고 비용을 절감

2 유연성
자체 시스템을 구축하는 경우, 서버 증축 및 시스템 확장에 고도의 기술과 엄청난 비용이 필요함
하지만, 클라우드의 경우, 컴퓨팅 리소스를 필요할 때 필요한 만큼 사용하여 확장, 축소하는 등 유연한 활용이 가능

3 가용성
자체 시스템을 구축하는 경우, 서버 장애에 대처하기 위해 이중화, 백업 조치가 필요함
하지만, 클라우드의 경우, 일부 하드웨어에 장애가 발생하더라도 서비스를 계속 이용할 수 있음
낮은 비용으로 높은 가용성 활용 가능
 
4 빠른 구축 속도
ㅡㅡ
SaaS
소프트웨어의 기능을 네트워크를 통해 필요한 만큼 서비스로 제공하는 형태
 
하나의 서버를 여러 기업이 공유하는 것을 전제로 함
다만, 데이터는 기업 사용자별로 분리하여 설계하여 보안성 확보
서비스를 계약하고, 사용자 계정이 준비되면 즉시 서비스 이용을 시작할 수 있음
패키지 소프트웨어를 구입하는 것에 비해, 도입까지의 시간을 줄일 수 있음
SaaS는 인터넷을 통해 접속이 가능
 
PaaS
기업의 어플리케이션 실행환경 및 개발환경을 서비스로 제공하는 형태

PaaS는 프로그래밍 언어 지원하는 실행환경, 데이터베이스가 마련되어 있다. 따라서 인프라 구축 및 운용을 하지 않아도 그 기반을 사용할 수 있으므로 단기간 응용프로그램을 개발하여 서비스를 제공할 수 있다.
즉, 코딩만 하면 됨

IaaS와 비교하면, 서버 보안 네트워크 부분을 클라우드 사업자에 위임한다는 점에서 구축 및 운용이 쉽고, PaaS는 단기간 응용프로그램을 개발하여 가동시킬 수 있다.

SaaS도 그렇지만 서버 및 미들웨어의 상세한 설정을 할 수 없고, 특정 PaaS 환경에 대한 의존도가 너무 높으면 다른 환경으로의 마이그레이션이 어려울 수 있음
 
IaaS
CPU, 하드웨어 등의 컴퓨팅 리소스를 네트워크를 통해 서비스 형태로 제공
대표적인 것 가상서버
웹 사이트 서버
웹 사이트 서버는 프로모션 이벤트처럼 단기간 접속자가 몰릴 경우, 컴퓨팅 리소스를 유연하게 조정하여 안정적인 운영, 비용 절감이 가능하다.

이용모델

퍼블릭 클라우드
퍼블락 클라우드는 클라우드 사업자가 시스템을 구축하고, 인터넷 망 등 네트워크를 통해 불특정 다수의 개인이나 기업에 서비스를 제공하는 형태
클라우드 시스템은 개인이나 기업의 방화벽 외부에 구축됨
기업이 자사의 IT 자산을 보유하고 있지 않아도 컴퓨팅 리소스를 서비스로 사용 가능하다
컴퓨팅 자원을 단기간 저비용으로 마련 가능하다

프라이빗 클라우드
데이터센터에 클라우드 관련 서비스를 활용하여 자사 전용 환경을 구축
문제점은 일단 클라우드를 만들어야 함
고도의 기술과 엄청난 비용이 필요하다

커뮤니티 클라우드
공통의 목적을 가진 특정 기업들이 클라우드 시스템을 형성하여 데이터 센터에서 공동 운영하는 형태
퍼블릭, 프라이빗의 중간적인 형태이다

하이브리드 클라우드
퍼블릭, 프라이빗, 커뮤니티 클라우드 같은 서비스와 온프레미스를 연계시켜 사용
일부는 회사 자원 사용 일부는 클라우드 사용


비용

온프레미스 시스템
초기 도입 시, 초기 비용이 비쌈
피크타임 이용량을 예상하여 하드웨어와 소프트웨어를 구입해야 함
도입 후, 서버 증축 및 시스템 확장에 고도의 기술과 엄청난 비용이 필요하며 회선, 시스템 운용을 위한 담당자 인건비 등의 비용 필요

클라우드 시스템
초기 도입 비용이 저렴함
운영 비용은 월 정액제가 가능하여 기업이 고정 지출을 예상할 수 있음
클라우드 사업자가 시스템을 운용하기 때문에 운용을 위한 인건비가 줄일 수 있음

조건에 따라 온프레미스가 더 저렴한 경우
1) 5년 이상 장기간 사용, 대규모 시스템 구축 및 운용
2) 클라우드 구축 시, 기존 온프레미스의 수정이나 데이터 이행에 소요되는 비용이 많은 경우
3) 장기간 안정적으로 실행되고 있는 애플리케이션이라면, 클라우드로의 마이그레이션이 더 비쌀 수 있음


확장성

안정성
IaaS의 리스크: 클라우드 사업자의 H/W 장애로 인한 데이터 손실, 서비스 중단
네트워크의 리스크: 통신도청, 중간공격, 통신위협과 네트워크 관리 미비로 인한 서비스 중단
이를 방지하기 위해, IaaS의 장애에 대처하기 위해
가상 서버 백업, 쉽게 시스템을 구축하기 위한 템플릿 마련해야 한다.

클라우드 서비스
- 가상 서버
- 스토리지 서비스
- 데이터베이스 서비스

가상서버
가상서버는 하나의 물리적 서버를 논리적으로 나누어 CPU, 메모리 등 자원을 할당한 것
생성된 가상서버는 실제 서버처럼 OS, 애플리케이선을 동작시킬 수 있음
그러나, 하드웨어를 에뮬레이션 하기 때문에 물리 서버보다 성능이 다소 떨어짐

가상서버 이용

가상서버 옵션
로드밸런스, 오토스케일, 스냅샷이 있음
클라우드 서비스의 가상서버는 리전과 존 선택이 가능함
리전은 서로 떨어진 독립적인 지역 ex. 서울리전, 미국리전
존은 같은 지역 내 독립적인 로케이션
리전에는 서로 다른 존이 설치되어 있으므로 멀티 존을 선택하여 이중화 및 부하 분산처리가 가능함

로드밸런스는 이중화 및 부하 분산 처리하는 것
서버의 접속량을 나누는 것
따라서 대량의 접속에 대응할 수 있는 시스템을 쉽게 구축 가능

오토스케일은 외부의 통신 데이터양에 따른 부하(서버의 cpu나 메모리 사용량이 일정 임계치를 초과)에 따라 자동으로 가상 서버의 대수를 증감시킨다
접속량 증가 시 서버 대수를 늘임
접속량 감소 시 서버 대수를 줄여서 불필요한 비용 감소

스냅샷은 이용자가 설정한 시간에, 정해진 시간에 자동으로 가상 서버 디스크를 백업한다.
 

 
클라우드 스토리지 서비스
클라우드 스토리지는 데이터 아카이브(보관), 백업(보호), 파일 서버, 재해 대책 등 다양한 용도로 이용되는 대표적인 서비스
최근에는 데이터 폭주로 인해 빅데이터 분석 기반의 구축에도 많이 이용되는 추세이다.
 
다양한 스토리지 서비스
대표적으로 AWS의 S3가 있음
 
AWS S3
데이터를 파일 단위로 저장, 검색, 삭제할 수 있는 스토리지이며, 객체 스토리지 라고도 부른다.
많은 클라우드 사업자들이 S3 같은 규모의 스토리지 서비스를 제공하고 있으며, 여러 개의 데이터 센터에, 데이터를 분산 저장함으로써, 데이터 손실을 막고 있음
1년 동안 99.99999%의 뛰어난 견고성과 내구성을 보장하며, 영구적인 데이터 저장이 가능하다.
무제한 데이터를 저장할 수 있는 용량이 제공되며 저장과 검색이 자유로움

AWS Glaicer
S3에 비해 비용을 크게 줄임
데이터 읽기에 시간이 오래 걸리기 때문에 장기적인 보관용 디지털 정보의 저장 및 자기테이브의 대체품으로 이용

S3 등 오브젝트 스토리지는 데이터 읽기, 쓰기 속도가 빠른 편이 아니기 때문에 엄격한 응답 속도가 요구되는 데이터 베이스 용도로 이용하는 경우, 블록 단위로 액세스하는 블록 스토리지 서비스를 이용할 수 있다.

기업이 파일 서버를 이용하는 경우,
파일 공유하는 기능이 있는?
파일 단위로 액세스 가능한 파일 스토리지 서비스를 이용할 수 있다.
 

클라우드 네트워크 서비스
클라우드 위에 네트워크를 구축
AWS VPC
가상 프라이빗 클라우드
이름 그대로 AWS 위에 네트워크를 만들어 개인 클라우드처럼 이용하는 것이다.

DNS 서비스
AWS Route 53이 대표적인 서비스이다.
이 서비스는 자체 도메인 이름으로, web이나 메일을 이용할 때 필요한 공개용 DNS 서버를 운영하고 관리한다.


DNS란, 사람이 읽을 수 있는 도메인 이름을, 머신이 읽을 수 있는 IP 주소로 변환하는 것
컴퓨터가 서로 통신할 수 있도록 한다. 전화번호부 같은 기능
IP 주소 암기 없이 example.com 같은 도메인 이름으로  웹사이트 이동이 가능하다.

AWS Route53
최종 사용자가 애플리케이션을 라우팅하는 안정적이고 비용 효율적인 방법
높은 가용성과 확장성을 제공하는 클라우드 DNS 웹 서비스이다.
www.example.com 같은 도메인 이름을 컴퓨터 간 연결에 사용하는 숫자 IP 주소로 변환하는 것

Route 53은 IPv6과 완벽하게 호환된다.

Route 53을 사용하여 DNS 상태 확인을 구성한 다음 Route 53 애플리케이션 복구 컨테이너를 사용하여 장애를 복구하고 애플리케이션 복구를 제어하며, 애플리케이션의 기능을 지속적으로 모니터링할 수 있다. 
 

클라우드 기술
가상화 기술, 분산처리 기술, 데이터베이스 기술, 네트워크 가상화 기술

가상화 기술
(하드웨어를 통째로 가상화)
서버 가상화 기술을 사용하면 하나의 물리적 서버 리소스를 여러 개의 서버 환경으로 할당할 수 있고, 여러 개의 물리적 서버 리소스를 하나의 서버 환경으로 통합할 수 있다.
가상화는 하나의 물리적 서버 리소스를 여러 개의 서버 환경으로 할당하고 각각의 환경은 OS, 애플리케이션을 동작시킬 수 있다.
하드웨어를 에뮬레이션 하기 때문에 물리 서버처럼 사용할 수 있지만 물리 서버보다 성능이 다소 떨어짐

하이퍼바이저 형과 컨테이너 형으로 분류된다
하이퍼바이저 형
OS 환경을 가상화
하나의 물리서버 하드웨어 위에 하이퍼바이저라는 가상화 소프트웨어를 동작시키고, 그 위에 Linux, Windows 같은 여러 개의 게스트 OS를 가동 시키는 것

장점
가상서버마다 OS 선택 가능
가상서버가 완전히 분리되어 있기 때문에 하나의 가상서버가 사이버 공격을 받아도 다른 가상 서버에 영향을 미치지 않는다

단점
가상서버마다 OS 필요하므로 하드웨어 리소스 소비량이 많다
가상 서버 부팅 시 시간이 걸린다.

컨테이너 형
애플리케이션 실행 환경을 가상화
하나의 OS 환경에서 애플리케이션의 실행 영역을 여러 개로 나누어 사용한다.
각각의 사용자 공간은 컨테이너라고 부른다.
각각의 컨테이너는 다른 컨테이너에 영향을 미치지 않고 애플리케이션 실행 가능

대표적인 컨테이너형 가상화 소프트웨어는 도커

장점
하나의 호스트 OS에서 여러 개의 OS 동시 이용
다른 컨테이너로의 복제성, 이식성 뛰어남
개별 컨테이너가 필요로 하는 하드웨어 리소스가 줄어 부팅이 빠르고, 1대의 물리 서버에 많은 컨테이너를 탑재할 수 있다.

단점
하나의 컨테이너가 사이버 공격을 받은 경우 다른 컨테이너도 위험에 노출될 가능성이 있다.

분산처리 기술
클라우드 등장 이전, 대용량 데이터를 처리하려면 고속 CPU와 메모리가 탑재된 서버가 필요했음
but
지금은 분산 처리 기술과 클라우드 서비스를 이용하여 데이터를 여러 개의 서버로 나누어 병렬로 처리
처리의 부하가 상황에 따라 리소스를 늘리거나 줄일 수 있음
따라서 가격 부담을 줄이고 대량의 데이터를 고속 처리 가능

클러스터링
대량의 데이터 분산 처리 장치
여러 개의 서버를 결합해 하나의 컴퓨터로 보이게 만들었다

Apache Hadoop
1대의 마스터 서버와 그 아래 여러 대의 슬레이트 서버로 구성
마스터 서버가 데이터 처리 전체를 제어
슬레이트 서버가 계산을 처리
따라서 처리 능력은 슬레이트 서버 대수에 비례하여 증가한다

Apache Spark
메모리 안에서 다량의 데이터를 병렬 분산 처리
아파치 하둡이 반복 처리를 할 때 디스크의? 에? 데이터를 읽고 쓰는 메모리 안에서만 읽고 쓰는 속도 매우 빠름
테라바이트 이상의 데이터 처리에는 적합하지 않다


데이터베이스 기술
RDB
관계형 데이터베이스
여러 개의 데이터를 행열의 표 형식으로 표현
복잡한 데이터의 관계를 처리할 수 있다.

NoSQL
관계형 데이터베이스가 아닌 데이터베이스
대량의 데이터를 분산시켜 고속으로 처리하는 분산 데이터베이스라는 특징이 있다.
따라서 클라우드 서비스 구현에 적합, 주로 빅데이터 분석에 사용
 
네트워크 가상화 기술
VPN은 불특정 다수가 사용하는 네트워크에 통신 채널을 만들고 가상의 전용선으로 통신한다.

엣지컴퓨팅은 컴퓨터 자원을 단말 기기 주변(엣지)으로 이동하여 처리하고, 필요한 데이터만 서버로 올리는 방법

클라우드 컴퓨팅은 서버를 한 곳으로 모아 집중 처리하고(대역폭 비용 많이 소요), 엣지 컴퓨팅은 말단에서 분산 처리하는 차이가 있다

엣지 컴퓨팅의 주목 배경은
실시간 애플리케이션 이용 확산(빠른 응답 속도 요구)
현장에서 사용할 수 있는 디바이스의 소형화, 저전력화, 비용절감 등

엣지 컴퓨팅의 특징 지비확네보
지연 감소: 말단에서 처리하기 때문
비용 절감: 클라우드 서버 자체에서 처리하는 데이터 자체가 줄어들기 때문
확장 비용 감소: 모든 처리를 엣지에서 하고 서버로 올리는 데이터 양이 적기 때문
네트워크의 영향을 덜 받음: 급한 건 엣지, 필요한 것만 서버로 올림
보안: 데이터를 분산 처리하기 때문

데이터 센터
실제로 데이터가 저장되는 공간
사람보다 데이터가 더 중요함
지진이나 자연재해로부터 안전한 지반이 딱딱한 곳에 건축해야 함
265일 전력 공급을 위해, 재난에 대비하기 위해, 무전력 전원 장치와 자가 발전 장치 등 갖추어짐

서버리스 아키텍처
클라이언트단에서 AWS API를 호출해서 사용하는 방식
클라우드 서비스를 풀매니지먼트로 사용하는 경우,
사용자는 서버의 존재를 전혀 의식하지 않고 애플리케이션을 동작시킬 수 있음
(클라이언트 사업자가 서버를 관리하고 운용하기 때문에 의식하지 않아도 됨)

ㅡㅡ
DevOps
소프트웨어 개발 사이클과 배포/운영 사이클을 연계함으로써 개발부터 배포까지 전 과정에 걸쳐 시간을 단축시키자는 취지에서 도입

소프트웨어 개발자와 QA 간 소통, 협업, 통합을 원활하게 하고자 하는 것

IT 관련 운영 서비스가 적절한 시점에 자동으로 이루어지게 하는 것
개발팀과 운영팀의 소통 장벽 때문에 도입

폭포수 모델
7단계로 구성
기문설개베릴운
기획, 문제정의, 설계, 개발, 배포, 릴리즈, 운영의 프로세스를 동기식으로 운영
모든 단계가 끝나야 일련의 프로세스를 새롭게 시작할 수 있음
제품에 이슈가 발생하면 해결까지 시간이 오래 걸리고 신속 유연한 대처가 어렵다

애자일 모델
폭포수의 단점을 보완한 방법
각각 개발 단위를 모듈로 만들어, 모듈별로 운영하는 방법
폭포수는 제품 전체
애자일은 하나의 모듈 단위라는 점에서 차이가 있다

데브옵스는 각 단계의 실행이 각각 단계별로 연결되어 하나의 chain으로 구성되는 모습으로 동작한다
기코필테릴베운모
기획, 코딩, 필드, 테스트의 데브 단계와
릴리즈, 배포, 운영, 모니터링의 옵스 단계가 순환 구조로 연결되어 각 단계의 실행은 이전 단계의 완료와 함께 자동으로 이루어짐

데브옵스라 하면 흔히 CI/CD 떠올림
이를 직역하면 연속통합/연속배포
여기에 자동이라는 말이 내포됨
즉 도구를 연계시켜 개발부터 배포까지 자동으로 데브옵스 툴체인에서 동작
ㅡㅡ
CloudFront
CloudFront는 AWS의 CDN 서비스
CDN이란 서버를 분산시켜놨다가 요청이 들어오면 저장된 것을 가장 가까이 있는 곳에 보내주는 것
물리적으로 떨어져있는 사용자에게 더 빠르게 제공
즉 일종의 캐시 개념이다

CloudFront는 Origin의 데이터를 Distribution 설정에 따라 캐싱하고, TTL 설정에 따라 CDN으로 배포하는 역할을 하는 것

버킷을 서울로 만들어뒀으면 나머지 지역에서도 접근 가능하지만 속도가 느리다는 문제가 있음
그래서 CloudFront가 캐시 메모리 역할을 함
웹 서버에 접속하지 않아도 웹 서버의 내용을 저장하는 것(사용자가 지정한 초 동안)

ex 인터넷이 끊겨도, 내 PC 안에 내가 직전에 접속한 정보가 남아있는 거를 그대로 보여줌
OS 입장에서 이것을 오래 가져갈 수 없기 때문에 대부분 5초에서 길면 60초 정도의 텀을 줌
이것을 TTL 이라고 함
TimeToLive 이 시간동안 유효하므로 갱신하지않음