<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>chloe_kim.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 28 Jun 2024 06:54:18 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>chloe_kim.log</title>
            <url>https://velog.velcdn.com/images/chloe_kim/profile/bd98a173-e048-4ee5-9c2a-7f83f3e3c19b/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. chloe_kim.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/chloe_kim" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[SeSsac_DAY2]]></title>
            <link>https://velog.io/@chloe_kim/SeSsacDAY2</link>
            <guid>https://velog.io/@chloe_kim/SeSsacDAY2</guid>
            <pubDate>Fri, 28 Jun 2024 06:54:18 GMT</pubDate>
            <description><![CDATA[<ol start="4">
<li>파이썬 메모리 사용과 자료형 </li>
</ol>
<p>4.1 메모리 관리 개요 
메모리 관리 : 프로그램 실행 중 필요한 데이터를 저장하고, 필요 없어진 데이터를 제거하는 과정 </p>
<p>자동 메모리 관리 : 가비지 컬렉션을 통해 불필요한 메모리를 자동으로 해제 </p>
<p>#잡생각  : GC가 이슈가 되서 confluence 오류가 있던적이 있었음!
그래서 주마다 설정해서 flush 하는 작업이 처리되면서 I/O 가 뛰었던것 같음 
그때 힙메모리 설정 조정도 했었던거 같음 (aws 파라미터 수정해서) </p>
<p>참조 카운팅 : 객체가 몇 번 참조되는지를 기록하여 참조가 0이 되면 메모리를 해제 </p>
<p>#잡생각 : 오 이거 aws aurora 스냅샷이랑 비슷하넹</p>
<p>파이썬은 메모리를 할당할 떄 PyObject 구조체를 사용 </p>
<p>모든 파이썬 객체는 이 구조를 기반으로 하여, 참조 카운트와 타입정보를 포함 </p>
<p>sys.getrefcount로 조회하기 
단 디버깅할때만 쓰이는게 좋음 </p>
<p>4.2 리스트의 정의와 사용법
리스트는 순서가 있는 변경 가능한 컬렉션
다양한 데이터 타입을 포함할 수 있으며, 인덱스는 0부터 시작 </p>
<p>컬렉션이라는것은 무언가를 모아놓은 공간이고 
순서가 있고, 다양한 타입을 포함할수 있다는게 특징임 </p>
<p>리스트를 대괄호를 사용하여 생성
추가는 append(), extend(), insert() 매서드 사용 가능</p>
<p>슬라이싱을 통하여 추출할 수 있습니다. </p>
<p>파라미터를 학습한다 : 모든 파라미터는 숫자들의 배열을 학습하는건데 
이 카피를 많이 쓰게 됨 </p>
<p>a=[1,2,3]
b=a.copy[]</p>
<p>4.2 딕셔너리
딕셔너리 딕셔너리는 키-값을 저장하는 변경 가능한 컬렉션입니다. 
키는 고유해야 하며 해시 가능해야합니다. 
딕셔너리는 중괄호를 사용하여 생성됩니다. </p>
<p>비어있으면 안됨</p>
<p>제가할때는 del 키워드를 이용하여 제거가능하고
pop으로도 가능함 </p>
<p>4.3 집합의 정의 (중복이 허용되지 않아서 연산에 유용함) 
집합의 정의와 사용법 </p>
<p>4.4 튜플의 정의 
튜풀은 순서가 있는 변경 불가능한 컬렉션임 
리스트와 비슷하지만 한번 생성되면 수정할 수 없음 </p>
<p>튜플의 값을 변환하는 것을 확인할 수 있음 
튜플 카운트로 하고.... </p>
<p>튜플에 있는 항목 x의 첫번째 인덱스를 반환</p>
<h1 id="python--반복문과-조건문-그리고-함수">python  반복문과 조건문 그리고 함수</h1>
<p>###if,elif,else 문 </p>
<p>기본문법 
if 조건1: 
    실행할 코드1 
elif 조건2: 
    실행할 코드2 
else 그외 :
    실행할 코드3</p>
<pre><code>score = int(input(&quot;점수를 입력하세요: &quot;))
if score &gt;=90:
    grade = &quot;A&quot;
elif score &gt;=80:
    grade = &quot;B&quot;
elif score &gt;=70:
    grade = &quot;C&quot;
elif score &gt;=60:
    grade = &quot;D&quot;
else:
    grade = &quot;F&quot;

## 여기에 코드 작성
print(f&quot;학점: {grade}&quot;)코드를 입력하세요</code></pre><h3 id="중첩-조건문">중첩 조건문</h3>
<h4 id="if-else-ifelse">if, else, ifelse</h4>
<p>숫자 입력은 input으로 받아서 int로 변환
숫자가 양수인지 음수인지 그리고 짝수인지 판별하시오 </p>
<p>${discount_amount:.2f}</p>
<p>fstring 과 
.2f : 소숫점 두자리수까지 나타내라 
파이썬 3.6부터 도입된 문자열 포맷팅 방식</p>
<h3 id="반복문">반복문</h3>
<h4 id="while과-for문">while과 for문</h4>
<p>시퀸스는 배열을 의미하는것임! 
여기서 리스트나 튜플이나 스트링은 시퀸스라고 할 수 있음</p>
<p>for 문의 경우 sequence의 길이만큼 나오는 것임! 
list로 바꿔보면 range 자체를 출력해보면 됨! 
예를 들어 list(range(1,6))</p>
<p>for문에서 range ( 시작점, 끝점) 여기서 끝점 신경쓸것 ㅋㅋㅋ </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[24' google cloud summit]]></title>
            <link>https://velog.io/@chloe_kim/24-google-cloud-summit</link>
            <guid>https://velog.io/@chloe_kim/24-google-cloud-summit</guid>
            <pubDate>Fri, 28 Jun 2024 01:04:15 GMT</pubDate>
            <description><![CDATA[<p>Welcome to innovators </p>
<ol>
<li>고가용성을 위한 cloud 구축의 필요성</li>
<li>data ai 를 위한 리소스 </li>
<li>- </li>
<li>클라우드의 상호호환성이 중요 ㅋㅋ
(근데 얘내들도 outbound 는 돈받음)</li>
<li>보안강화 (당연한거긴함)
planet-sacle protection ㅋㅋㅋㅋㅋ</li>
<li>비용 최적화 (scale-up, scale-out)
provides near-real-time or short lag for biling data and alerts </li>
<li></li>
</ol>
<p>개발자 키노트1 : Next&#39;24 제시하는 10가지 핵심 전망
wht&#39;s new AI </p>
<p>Gemini 1.5 pro 
2M context winodw, context caching 
1M for high-volume tasks where cost and latency matter 
(with low cost)</p>
<p>Hugging face intergration with Vertex AI 
published model hugging face 
(based by domain) </p>
<p>promt management 
(version history and management)</p>
<p>google cloud infrastructure (GPU/TPU) </p>
<p>vertex ai agents 
(using natural language)<br><img src="https://velog.velcdn.com/images/chloe_kim/post/132c840c-c778-48c5-a86e-7c825fb88926/image.png" alt=""></p>
<p>langchain on verex AI 
(flameworks에 따라 다르지만 최대한 지원하는편) </p>
<p>langchain을 어떻게 이용하는지 보여주는 부분이 필요 (개발형 모델을 선택하고 도구 정의 - 오케스트레이션 앱 간리형 배포) </p>
<p>Ground with google search </p>
<p>vertex ai search (out of the box) </p>
<p>Rag system APIs Call (by myself)</p>
<p>Firebase **이거 뭔지 모름</p>
<p><a href="https://appmaster.io/ko/blog/paieobeiseuran-mueosibnigga">https://appmaster.io/ko/blog/paieobeiseuran-mueosibnigga</a></p>
<p>개발자</p>
<p>liner google (tool)</p>
<p>Gemma open models </p>
<p>LLM (미래를 만드는 AI 개발자를 위한 GOOGLE CLOUD AI RESEARCH) </p>
<p>gEMINI 1.5 FLASH 검새기반 답변 기술이 필요 </p>
<p>COLUD AI 검진 엔진 
유저질문 &gt; 클라우드 AI 검색엔진 &gt; 답변 (관련된 고객 문서) </p>
<p>(검색엔진의 맞춤화) - 이거 아마도 </p>
<p>llms distillation (증류) : 더 작교 효율적인 모델로 합축하는 기술</p>
<p>prompt engineering 까지해서 
답변이 나오는 이유까지 </p>
<p>vertex AI </p>
<p>LLMs 관련 진행연구 
(정형 데이터 행성 )</p>
<p>context 크기 비교<br>long context 토큰의 갯수가 연관이 있기때문에
multi-turn </p>
<p>long context or RAG </p>
<p>CHATBOT은 RAG을 적용하기 좋을것임</p>
<p>멀티모달은 Long context로 적용하기 좋을 것임 </p>
<p>Gemini 멀티모달 기능으로 제품가치 강화하는 법 
long context 학습시간이 오래 걸릴것임!! </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Sessac 1Day]]></title>
            <link>https://velog.io/@chloe_kim/Sessac-1Day</link>
            <guid>https://velog.io/@chloe_kim/Sessac-1Day</guid>
            <pubDate>Wed, 26 Jun 2024 02:26:14 GMT</pubDate>
            <description><![CDATA[<h2 id="ot">OT</h2>
<p>모델 하나를 잡고 파보는 경험이 필요함
RAG는 Generation 하기 위한 방법임
파이토치로 모델을을 실험할때 많이 쓰임
텐서는 고치기 힘듬 
7빌리어 이하가 sLLM 임! 
LangChain 의 문법이 너무 많아서  일부를 활용해서 써야함 
PEFT 
평가를 2번을 하는데 </p>
<ol>
<li>RAG에 대한 평가지표에 대한 부분  (아이디어 영역들) </li>
<li>RAG를 프롬프트로 Generation 을 하고 평가를 함 
평가기준은 어떻게 : 테스트 데이터 셋을 어떻게 해야할지 고민해보아야함 
airflow dag를 활용해서 스케줄링하고 서빙.. 
airflow : 스케줄러 같은것임 
크롤링 - 모델학습 -.... (배치서빙이라는것) 
class 월수금  10:00-18:30 
peer session 화,목 오후 16:00-17:00 </li>
</ol>
<p>그라운드 룰 : 각자 한가지씩 정한 룰 </p>
<ol>
<li><p>피어세션 전에 적어도 질문 하나씩 만들어오기
2, 서로 개인회고에 리뷰 남겨주기</p>
</li>
<li><p>사소한 팁이라도 1개씩 공유하기</p>
</li>
<li><p>도움될만한 자료들 요약해주기</p>
</li>
<li><p>오전 9시 30분에 30분정도 pre-피어하기 : 각자 to do 나누기  </p>
</li>
<li><p>모더레이터 역할 
공지 &amp; 일정 &amp; 제출 횟수 체줄 </p>
</li>
<li><p>서기 역할</p>
</li>
</ol>
<h1 id="class1-">class1 :</h1>
<p>##1. 파이썬의 탄생과 c와의 관계</p>
<p>java : clean code 
python 은 규약이 많아지지 않으므로 간결해서 좋은것 같음 </p>
<p>데분쪽은 python 을 쓸수밖에없음
백앤드는 java scrit node를 쓸수는 없.. </p>
<p>파이썬은 c로 작성이됨</p>
<p>주요 용도가 다름 
파이썬 : 웹 개발, 대분, ai
c언어 : 운영체제, 임베디드 </p>
<p>정적타입으로 되어있으면 이미 코드를 작성할때 타입이 정해지기 떄문에 오류는 없을 것인데</p>
<p>동적 타입의 경우는 작동시 할당 받음으로... 
ex) string 으로 들어갈때 문제가 발생 할 수 있음</p>
<p>우리는 vs code 를 쓸것임 </p>
<p>컴파일어는 쭉 짜서 한번에 돌리기
인터프리터 언어는 한줄한줄 기계어로 번역하는 방식임 
(자연어: 사람이 이해할수있는 언어)
동적인 데이터 타입을 결정할 수 있도록 지원
즉, 변수를 명명할때 숫자, 문자 구분에서 자유로움</p>
<p>**
코드를 파이써닉하게 짜야한다. 위의 장점을 잃지 않게 짜야한다. 
**</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[# MySQL 구조, 설정]]></title>
            <link>https://velog.io/@chloe_kim/MySQL-%EA%B5%AC%EC%A1%B0-%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@chloe_kim/MySQL-%EA%B5%AC%EC%A1%B0-%EC%84%A4%EC%A0%95</guid>
            <pubDate>Mon, 24 Jun 2024 12:04:28 GMT</pubDate>
            <description><![CDATA[<h1 id="mysql-구조-설정">MySQL 구조, 설정</h1>
<p><strong>MySQL 몇가지 특성</strong></p>
<ol>
<li>Nested Loop Join 만 가능<ul>
<li>HASH 나 이런건 플러그인을 설치하든 외부에서 작성된것을 Import</li>
<li>이 조인만 가능하다는 것은 외부 테이블 건수에 따라서 처리해야할 대상이 많아짐, 적절한 드라이빙 테이블 대상을 선정해야함
(선행 테이블 사이즈 * 후행 테이블 접근횟수)</li>
<li>두테이블에 조인컬럼에 인덱스를 무조건 고려해야함</li>
<li>&quot;대량 데이터 처리에 적합한 JOIN 은아님&quot;</li>
</ul>
</li>
<li>단일 코어에서 쿼리 처리<ul>
<li>CPU 코어 개수를 늘리는 튜닝보다, 작업을 병렬처리가 아닌 직렬로 하기때문에, 코어를 강력한것으로 쓰는게 좋음</li>
</ul>
</li>
<li>엔진을 선택할 수 있음<ul>
<li>MySQL 스토리지 엔진이 구분되어 원하는 특성에 맞게 엔진 사용이 가능</li>
</ul>
</li>
<li>비교적 손쉬운 비동기 이중화가 가능하기 때문에 스케일아웃에 적합함</li>
<li>MVCC<ul>
<li>목적은 잠금을 사용하지 않는 일관된 읽기를 하는 데 있다.</li>
<li>동시성 처리를 위해 잠금을 걸지 않고, Undo 로그에 기록되어있는 데이터값을 그대로 읽어온다. 이것이 여러버전이면, 일관성, 동시성이 보장됨</li>
</ul>
</li>
</ol>
<p><strong>MySQL 엔진 + 스토리지 엔진</strong></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/2d2d68bb-5cc1-447c-a22b-7ef6ed3739b0/image.png" alt=""></p>
<ol>
<li>포어그라운드 스레드(주로 사용자 데이터 처리)
쿼리를 요청하면 MySQL 엔진에서 커넥션 핸들러가 커넥션과 인증처리</li>
</ol>
<p>--&gt; SQL 인터페이스를 통해 처리 방식을 제공받고
--&gt; &quot;SQL Parser&quot;를 통해 문법오류 파악하고 그것이 문제가 없으면(syntax)
내부에서 처리하기 좋게 트리(토큰) 형식으로 변경
--&gt; 전 처리기가 파서 트리를 보고 구조적(메타정보 확인, 컬럼 유무,권한 유무)
      문제가 있는지 파악
--&gt; SQL 옵티마이저가 통계를 참고하여 수행계획을 세움
--&gt; 수행 계획대로 접근하여 스토리지 엔진을 통해 데이터를 가져옴
2. 백그라운드 스레드(그 밖의 유지보수 작업)
--&gt; change buffer/ log buffer / deadlock monitor / dirty memory buffer를 쓰고 지우거나</p>
<p><strong>메모리 &amp; 파일 구조</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/ba82d0f2-6e3e-43f4-b242-b3b451bef125/image.png" alt=""></p>
<ol>
<li><p>Adaptive_Hash_Index</p>
<p> B-Tree의 탐색 비효율(보조 인덱스를 수행할때 어차피 키를 찾고 다시 서칭해야하는
 이슈나 밸런스가 깨져서 효율적인 탐색이 불가한 상태에서의 검색)
 을 극복하기 위해, 인덱스에 자주 사용되는 데이터를 해쉬로 가지고있음
 이것은 MySQL이 판단해서 해시로 가지고 있는 값이고 어떤 것을 태울지 모름, 탈때는 수행속도가 아주 빠르고 효율적임 옵션으로 제어 가능.테이블 DROP 시 해당 인덱스도 삭제되기때문에</p>
<p> 이슈 발생(성능 영향) 여지 있음</p>
</li>
<li><p>Change Buffer==Insert Buffer</p>
<p> 보조 인덱스의 변경에 고비용에 대비한 영역, &quot;데이터 버퍼에서 해당 인덱스에 데이터가 없으면&quot;
 디스크로 가는것이 아닌 버퍼를 활용하여 비용을 줄임</p>
</li>
<li><p>Redo Log</p>
<p> 변경된 페이지의 트랜잭션 내용이 메모리에 상존하다가 갑자기 서버가 크래시나 다운이 되어
 디스크에 채 쓰지 못하는 상황이 발생할때, 대비하도록 Redo Log가 설정값으로 주기적으로 기록(log buffer 내 redo buffer에 선 기록 후 디스크로) 딱 FLUSH 직전 변경분만 가지고있음</p>
</li>
<li><p>Undo Log</p>
<p> 데이터의 변경 직전 데이터를 보관하는데, MVCC 사용을 위한 장치
 동시성을 향상시키나 변경시 버퍼 내 메모리 리소스를 사용하고 파일에 작성하므로
 트랜잭션 지연(롱 트랜잭션)이나, 대용량일 경우 문제(메모리 경합)가 더욱 커질수 있음
 메모리에 의존하여 계속해서 사용량을 증가시키거나 리소스를 사용하므로 때문에,
 등장한것이 5.7에 Undo 테이블 스페이스 역시 log buffer 내 undo log buffer 를 먼저 쓰고
 파일을 씀</p>
</li>
<li><p>Double Write Buffer
<img src="https://velog.velcdn.com/images/chloe_kim/post/0ed2a04f-4911-422f-a8e9-7e3f811ae84e/image.png" alt=""></p>
</li>
</ol>
<p>5%~10% 성능 손해를 감수하고 메모리에서 FLUSH 된 &quot;데이터&quot;를
이곳에도 저장하여, OS에 디스크 쓰기 단위가 달라 발생하는 충돌이나 장애 발생하여 &quot;디스크에 변경이력을 저장하지 못했을때&quot; 이곳에서 대조해서 복구</p>
<p><strong>InnoDB 특징</strong></p>
<ol>
<li>Key 기반의 Clustering</li>
<li>Row-level 기반 잠금</li>
<li>ACID 트랜잭션 처리를 위한 고안(Commit/Rollback, 제약조건, 잠금)</li>
<li>동시성 향상을 위한 잠금이 필요없는 일관된 읽기(MVCC)</li>
<li>데드락 모니터링</li>
<li>데이터가 복원하기 좋게 영구적으로 보관되므로 포랜식에 가치가 있음</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Trouble shooting case] Encoding issue]]></title>
            <link>https://velog.io/@chloe_kim/Trouble-shooting-case-Encoding-issue</link>
            <guid>https://velog.io/@chloe_kim/Trouble-shooting-case-Encoding-issue</guid>
            <pubDate>Mon, 03 Jun 2024 07:22:16 GMT</pubDate>
            <description><![CDATA[<p>[한장요약] </p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/fa3ddf62-6020-4a65-a247-23108e9af82a/image.png" alt=""></p>
<p>데이터분석팀에서 사원 및 부서정보 수정요청이 왔었음 (공통점이 있다면 중국어중 간체자가 일부라는점)</p>
<p>간체자: 중국의 문자 개혁에 따라 글자 모양을 간략하게 고친 한자
<a href="https://ko.wikipedia.org/wiki/%EA%B0%84%EC%B2%B4%EC%9E%90">https://ko.wikipedia.org/wiki/%EA%B0%84%EC%B2%B4%EC%9E%90</a></p>
<p>[상황에 대한 이해]**
Check1. 문제가 된다고 하는 서비스를 바라보는 table이나 view가 어딘데? **</p>
<p>문제점 : 현업(데이터 분석팀)에서 전달받은 문제가 된다고 하는 데이터 셋쪽의 DB는 데이터 분석 팀의 DB이기 때문에 접근이 불가능함 </p>
<p>*대체 해결점 : 그렇다면 그 DB에서 연결되는 linked 구조를 확인해달라고 요청하여 Souce DB를 확인함 </p>
<p>문제가 되는것으로 추정되던 대상
<img src="https://velog.velcdn.com/images/chloe_kim/post/671fdbb7-f1ac-4ae4-b2c9-da1fc87bbe9a/image.png" alt=""></p>
<p> view이름을 전달 받아서 확인해보았을때 관리하는 서버중에서 MySQL Webo DB에서 Emp view에서 데이터를 가져가는 것을 확인함 </p>
<p>*<em>Check2. 그렇다면 해당 Webo DB에서 문제가 되는 대상을 확인해보자 *</em></p>
<p>view?, Table? 
: 둘다 깨짐 (예시 이미지일 분이며, 실제로는 네모 모양으로 깨졌음) 
<img src="https://velog.velcdn.com/images/chloe_kim/post/b1b3cf0e-5755-4991-8765-b72053a9ff5d/image.png" alt="">
(<em>table과 view는 mysql 상에서 스케줄러를 이용하여 매일 동기화 되는 시스템이었음) 
*</em>
*<em>check3. 그렇담 임시조치로 MySQL Webo db에 문제되는 데이터만 별도로 update 하면안되나? *</em></p>
<p>MySQL 내 조치에서는 문제점이 없었음! (약 150 rows 업데이트완료)
그러나 동기화이슈발생! (MSSQL TO MYSQL)</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/596baef0-f4f6-431f-9efa-7ba129b9c29a/image.png" alt="">
이유: SQLSERVER에서는 연결된 끝점(서버)의 테이블의 데이터를 UPSERT할때 기존데이터의 정합성을확인하기때문에 &quot;행을 업데이트 할 수없습니다. 일부 값의 마지막으로 읽은 후에 바뀐 것 같습니다&quot; 라는 ERROR MESSAGE 확인 </p>
<p>그래서 원복처리하고 임시조치없이 빠르게 처리를 목표로함</p>
<p><strong>Check4. 데이터는 어디서 받아오는데?
*</strong>전체적인 데이터 구조는 다음과 같았음 
<img src="https://velog.velcdn.com/images/chloe_kim/post/64e32137-f58c-4457-91e5-5b445a5b4426/image.png" alt=""></p>
<p>단, 데이터를 끌어오는방식은 다음과 같음 </p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/e3bb3b07-5362-4ff1-aab7-4158428b8d48/image.png" alt=""></p>
<p>SQLserver 에서 서버 연결하기 :  <a href="https://wakeupslaves.tistory.com/21">https://wakeupslaves.tistory.com/21</a>
SQLserver에서 SP로 왜 사용해야하는데? (성능) : <a href="https://devkingdom.tistory.com/323">https://devkingdom.tistory.com/323</a>
Sqlserver에서 SP 짜는 예시 : <a href="https://devkingdom.tistory.com/324">https://devkingdom.tistory.com/324</a>
sqlserver에서 스케줄러 거능 방법 : <a href="https://omty.tistory.com/30">https://omty.tistory.com/30</a></p>
<p>**
check5. 그렇다면 SQlserver 에서는 데이터가 깨지나?**</p>
<p>데이터가 안깨지는것을 확인!
(예시 table)
<img src="https://velog.velcdn.com/images/chloe_kim/post/a1227e01-e9a2-4c89-ade9-d8e82af4eace/image.png" alt=""></p>
<p>*<em>=그렇다면 뭔가 잡배치 동기화 진행시 문제가 생긴게 아닐까를 의심
*</em></p>
<p>##여기서 궁금증일수 있는거 
MSSQL &gt; MYSQL 어떻게 동기화 시키는데?
ODBC를 이용하여! 혹은 JDBC 를 이용하여!</p>
<p>ODBC란? 
엄청나게 많은 SQL회사 각각의 제품을 ODBC 연동 API로 쉽게 관리하는것!</p>
<blockquote>
</blockquote>
<p>HOW TO! </p>
<ol>
<li>MySQL 연결 드라이버 다운로드 (드라이버 다운로드 : <a href="https://dev.mysql.com/downloads/connector/odbc/">https://dev.mysql.com/downloads/connector/odbc/</a></li>
<li>ODBC 데이터 원본관리자에서 [시스템 DSN] 탭을 선택하고 [추가]버튼 클릭
<img src="https://velog.velcdn.com/images/chloe_kim/post/24c822e0-6357-4f3f-ac44-ef33ee29610b/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/618a7530-614f-4c87-8b15-bcea76350966/image.png" alt="">
연결 속성에서 대상이되는 (Destination db) 설정 
<img src="https://velog.velcdn.com/images/chloe_kim/post/c4d65832-e2eb-4925-90b5-abdd6aa6660b/image.png" alt="">
그럼 요로코럼 나오는데 
<img src="https://velog.velcdn.com/images/chloe_kim/post/ce8b13db-86e1-4e3b-8082-331b045eb502/image.png" alt="">
이제 이후 이 odbc를 msssql 에서 이용해서 연결해줘야함!</li>
<li>SQL Server의 SSMS 도구에서 [새 연결된 서버]를 실행하여 링크드서버를 등록
서버 유형은 [기타 데이터 원본]에서 공급자를 OLE DB Provider for ODBC Drivers를 선택
<img src="https://velog.velcdn.com/images/chloe_kim/post/d22a3b90-45ac-41a5-83c1-46b4bd8a8610/image.png" alt="">
그다음 보안 탭에서 사용자 로그인 계정과 비밀번호를 입력
<img src="https://velog.velcdn.com/images/chloe_kim/post/d4864a9d-a19f-426a-82e8-ff8d8f548b6e/image.png" alt="">
이후 링크드 서버 등록이 완료되면 ssms 에서 추가된 linked 서버 확인가능
<img src="https://velog.velcdn.com/images/chloe_kim/post/8bbc7ad1-e09b-4ff2-b54e-0d539347c68b/image.png" alt=""></li>
</ol>
<blockquote>
<p><strong>물론 코드로 확인가능!</strong>
원격저장 프로시저에서 사용되는 링크드서버로그인 정보를 확인 
exec sp_helplinkedsrvlogin
연결된 서버에서 테이블에 대한 정보 반환
exec sp_tables_ex &#39;WeboDB&#39;</p>
</blockquote>
<p>*<em>Check.6 그렇다면 해결책은?
*</em>
AS-IS : MySQL ODBC 5.3 ANSI Driver
TO-BE : MySQL ODBC 5.3 Unicode Driver</p>
<p>무슨차이점인데?
MySQL ODBC ANSI Driver는 시스템 로케일에 따라 ANSI 문자 세트를 사용하며, 주로 영어와 같은 기본 라틴 문자 세트를 사용하는 애플리케이션에 적합합니다.</p>
<p>MySQL ODBC Unicode Driver는 Unicode 문자 세트를 사용하여 전 세계 모든 문자를 지원하며, 다국어 및 국제화된 애플리케이션에 적합합니다.</p>
<p>참고* : 동일한 이슈 확인
<a href="https://forums.mysql.com/read.php?37,634839,634839#msg-634839">https://forums.mysql.com/read.php?37,634839,634839#msg-634839</a></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/3c3a2c1a-27c6-47ea-83a5-177c87c5f7b7/image.png" alt=""></p>
<p>**
FINAL. 해결완료!**</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/840a621f-05d3-428c-a4c9-a9ee7e3b046e/image.png" alt=""></p>
<blockquote>
<p>알고가야할것들
1.ANSI VS Unicode 
2.ODBC? JDBC?
3.DB연동 관리 이대로 옳은가?</p>
</blockquote>
<ol>
<li>ANSI VS UNICODE
<img src="https://velog.velcdn.com/images/chloe_kim/post/42c2e4b0-fa53-48fe-b21e-d834efba5925/image.png" alt=""></li>
</ol>
<ol start="2">
<li><p>ODBC와 JDBC의 특징 비교
<img src="https://velog.velcdn.com/images/chloe_kim/post/8049632c-5edf-40c7-9966-9e39b1413b99/image.png" alt=""></p>
</li>
<li><p>DB연동관리 이대로 옳은가?
ㅎㅎㅎㅎㅎ 레거시... </p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[JOIN ]]></title>
            <link>https://velog.io/@chloe_kim/JOIN</link>
            <guid>https://velog.io/@chloe_kim/JOIN</guid>
            <pubDate>Wed, 29 Nov 2023 01:43:45 GMT</pubDate>
            <description><![CDATA[<ol start="10">
<li>조인수행시 조인기법</li>
</ol>
<blockquote>
<ul>
<li>NL Join(Nested Loops join) : 중첩된 반복문, 랜덤 엑세스
2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 row를 결합하여 원하는 결과를 조합하는 조인방식 </li>
</ul>
</blockquote>
<p>조인해야할 데이터가 많지 않을 경우에 유용하게 사용됨 </p>
<p>드라이빙 테이블로 한 테이블을 선정하고 이 테이블로부터 where절에 정의된 검색 조건을 만족하는 데이터를 걸러낸 후 이 값을 가지고 대상 테이블에 반복적으로 조인 조건을 만족하는 최종 결과값을 얻어냄 </p>
<p>Driving Table이란 JOIN을 할 때 먼저 액세스 되어 ACCESS PATH를 주도하는 테이블을 Driving Table이라고 합니다. 즉, 조인을 할때 먼저 액세스 되는 테이블을 Driving Table이라고 하며 나중에 액세스 되는 테이블을 Driven Table이라고 합니다. 여기서 Driving Table은 옵티마이저가 결정하고 자연스레 Driving Table이 아닌 테이블은 Driven Table로 결정됩니다. </p>
<blockquote>
<p>Nested Loops join의 장단점</p>
</blockquote>
<ol>
<li>인덱스에 의한 랜덤 액세스에 기반하고 있기 때문에 대량의 데이터 처리시 적합하지 않음 </li>
<li>driving table로는 데이터가 적거나 where절 조건으로 row의 숫자를 줄일 수 있는 테이블이어야함 </li>
<li>driven table에는 조인을 위한 적절한 인덱스가 생성되어 있어야함 </li>
<li>선행 테이블의 결과를 통해 후행 테이블을 액세스 할때 랜덤 I/O가 발생 </li>
</ol>
<p>** NESTED LOOP JOIN의 성능 개선 포인트 **
적절한 드라이빙 테이블의 선정
NESTED LOOP JOIN을 할때는 어떤 테이블이 먼저 액세스 되느냐에 따라서 속도의 차이가 크게 날 수 있습니다. 앞서 NESTED LOOP JOIN 동작 과정에서 살펴보았듯이 먼저 액세스 되는 Driving Table의 조건을 만족하는 결과 row수가 많다면 그만큼 반복해서 Driven Table에 접근해야 하므로 성능은 자연히 나빠질 것입니다. 따라서 NESTED LOOP JOIN방식을 채택하였다면 Driving Table의 선택이 매우 중요합니다. 그렇기에 Driving Table은 WHERE 절로 최대한의 데이터를 거를 수 있는 테이블이나 애초에 데이터의 양이 적은 테이블로 선정하는 것이 좋습니다. </p>
<ul>
<li>Hash Join : 해쉬값 비교, 인덱스 미존재 사용가능, 동등조인만 가능</li>
</ul>
<ul>
<li>Sort Merge Join : 
조회범위가 많을때 주로 사용하는 조인 방법론 
양쪽 테이블에 각각 access하여 그 결과를 정렬하고 그 정렬한 결과를 차례로 scan해 나가면서 연결고리 조건으로 merge하는 방식 
주로 조인 조건 칼럼에 인덱스가 없거나, 출력해야할 결과 값이 많을때 사용 </li>
</ul>
<p>인덱스 미존재 사용가능, 동등조인 비동등조인 가능</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[timesacle db ]]></title>
            <link>https://velog.io/@chloe_kim/timesacle-db</link>
            <guid>https://velog.io/@chloe_kim/timesacle-db</guid>
            <pubDate>Fri, 17 Nov 2023 08:07:08 GMT</pubDate>
            <description><![CDATA[<p>ddd
dd
d
ddddd
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
dd</p>
<p><a href="https://grafana.com/grafana/dashboards/6102-timescaledb-hypertables/">https://grafana.com/grafana/dashboards/6102-timescaledb-hypertables/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[22.Disaster Recovery(DR)]]></title>
            <link>https://velog.io/@chloe_kim/22.Disaster-RecoveryDR</link>
            <guid>https://velog.io/@chloe_kim/22.Disaster-RecoveryDR</guid>
            <pubDate>Mon, 23 Oct 2023 16:38:55 GMT</pubDate>
            <description><![CDATA[<p>• Disaster : 비즈니스에 심각한 부정적인 영향을 주는 사건
✓ Natural disasters – 지진, 홍수 등
✓ Technical failures – 전원 실패, 네트워크 연결 문제 등
✓ Human actions – 부주의한 조작/설정, 허용하지 않은 사람의 액세스/변경 등
• High Availability(고 가용성) vs. Disaster Recovery(재해 복구)</p>
<p><strong>재해 복구
✓ 전체 워크로드를 별도의 장소에 복사하는 것에 중심</strong>
✓ 지진, 홍수 등의 재난 이벤트
✓ 재해 복구의 목표는 <strong>비즈니스의 연속성</strong></p>
<p><strong>고 가용성</strong>
✓ 일부 워크로드(워크로드 구성요소)의 서비스를 지속하는 것에 중심
✓ 컴포넌트 실패, 네트워크 문제, 소프트웨어 문제, 시스템 과부하 등의 재해 복구 보다 구체적이고 작은
범위
✓ 고 가용성의 목표는 시스템의 기능 수행 시간의 최대화</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/f098f3b8-ca9e-4f2e-b0b6-69b606b93bc0/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/15d833cc-1380-444c-87a3-80ec9e842142/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[21. Machine learning]]></title>
            <link>https://velog.io/@chloe_kim/21.-Machine-learning</link>
            <guid>https://velog.io/@chloe_kim/21.-Machine-learning</guid>
            <pubDate>Mon, 23 Oct 2023 16:32:13 GMT</pubDate>
            <description><![CDATA[<p>Comprehend
• 텍스트 안에서 특정 항목을 찾아내는 서비스
• 예, 분석 보고서에서 회사 이름 찾기,부정적인 후기 또는 고객 서비스 상담사와의 긍정적인 고객 상담
Rekognition
• 이미지, 비디오 분석 (이미지에서 얼굴 탐지, 사물 인식)
Polly
• 텍스트를 음성으로 변환하는 서비스
Lex
• 음성인식 서비스, 챗봇 구현 가능
Textract
• 스캔문서에서 문자, 테이블, 양식 추출 서비스
Translate
• 번역 서비스
Transcribe
• 음성을 텍스트로 변환
SageMaker
• 머신러닝 모델을 구축, 훈련 및 배포 하는 서비스
Forecast
• 머신러닝을 기반으로 하며, 비즈니스 지표 분석을 위해 구축된 시계열 예측 서비스
Kendera
• 지능형 검색 서비스
• 간단한 키워드 외에도 자연어 질문을 사용하여 원하는 답을 얻을 수 있으며 텍스트 조각이든, FAQ이든, PDF 문서이든 관계없이 문서 내에서 정확한 답변을 반환
Personalize
• Amazon.com에서 실시간 맞춤화 추천에 사용하는 것과 동일한 기계 학습(ML) 기술로 애플리케이션을 구축 가능한 서비스
• 특정 제품 추천, 맞춤화된 제품 순위 재지정, 맞춤화된 직접 마케팅 등을 포함하여 다양한 맞춤화 환경을 제공할 수 있는 애플리케이션을 손쉽게 구축 가능
Amazon Connect
• 클라우드 기반 고객 센터 서비스
• 전화 통화, 자동 음성음답, 챗봇 등의 기술 통합 가능</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[20.컴퓨팅 - Elastic Beanstalk]]></title>
            <link>https://velog.io/@chloe_kim/20.%EC%BB%B4%ED%93%A8%ED%8C%85-Elastic-Beanstalk</link>
            <guid>https://velog.io/@chloe_kim/20.%EC%BB%B4%ED%93%A8%ED%8C%85-Elastic-Beanstalk</guid>
            <pubDate>Mon, 23 Oct 2023 16:29:57 GMT</pubDate>
            <description><![CDATA[<p>Elastic Beanstalk
• 웹 애플리케이션 및 서비스를 배포하고 운영하는 서비스
• 사용자가 직접 인프라 리소스를 구성할 필요 없고 애플리케이션 코드에만 집중하면 됨
• 코드를 업로드하기만 하면 Elastic Beanstalk가 용량 프로비저닝, 로드 밸런싱, Auto Scaling부터 시작하여
애플리케이션 상태 모니터링에 등의 배포를 AWS에서 자동으로 처리
• Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker 웹 애플리케이션을 지원
• Elastic Beanstalk 워크플로</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/09e46bfc-6c54-411d-b30f-c80c0bb40d54/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/a02f88f5-a5d2-4873-9218-27ed8686728e/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/437b654e-a8c2-4cb6-b804-e1511f91a93c/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/0ef039d8-0fb1-4349-afee-e6cda14ceea8/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/90e00b6c-079a-4bc2-a543-44061a9b2da7/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/29bf8590-f5e0-46d5-8d7e-b10bde2214f0/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/89fc9ef1-c1b0-4b57-b2ac-06db7e497a50/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/22d7ae24-0f79-41b8-b256-53bacc683856/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/9a3edf7e-e243-4059-a078-8d4bfc21eab5/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/7e7c57ea-0a38-4747-b6de-c05f065f6656/image.png" alt="">
정상배포</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/4aa3c546-0829-494a-bc4e-0dd0a4501f9d/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/f3d0e72e-ee37-4a94-b6ca-662b89e81b69/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/659c6bf1-addf-41e8-a554-43dfa69a4ac5/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/d22150fe-5c0e-40bb-9b4b-a78e696e1332/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/86bd1776-1b53-43da-853d-f6b9f5a97e9e/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[19.컴퓨팅 -Serverless]]></title>
            <link>https://velog.io/@chloe_kim/19.%EC%BB%B4%ED%93%A8%ED%8C%85-Serverless</link>
            <guid>https://velog.io/@chloe_kim/19.%EC%BB%B4%ED%93%A8%ED%8C%85-Serverless</guid>
            <pubDate>Mon, 23 Oct 2023 16:23:56 GMT</pubDate>
            <description><![CDATA[<p>Serverless
• 서버를 사용자가 관리할 필요가 없다는 의미
• 실제로 서버는 존재하며 서버 인프라 운영은 AWS등의 클라우드 회사에서 담당
• AWS에서 용량조정, 프로비저닝, 패치 등의 인프라를 관리
• 사용자는 필요한 애플리케이션을 구축해서 사용하기만 하면 됨
• 대표적인 AWS 서버리스 서비스
✓ AWS Lambda, AWS Fargate
✓ Amazon S3, DynamoDB, Amazon Aurora Serveless
✓ Amazon SNS , Amazon SQS, API Gateway</p>
<p><strong>Lambda</strong>
• 코드를 실행하여 동작하는 서버리스 컴퓨팅
• EC2는 서버를 시작하고, 애플리케이션을 설치하고 서버가 계속 실행되며 사용자가 직접운영 해야함
• Lambda는 AWS에서 서버 운영에 필요한 모든 인프라를 관리
• Lambda 사용자는 코드를 입력하여 실행만 하면 됨
• Lambda 요청할 때에만 시스템을 사용하는 온디맨드 방식의 이벤트 중심의 실행
•** Lambda는 사용한 만큼만 비용을 지불 **(코드를 실행한 횟수와 실행한 시간으로 과금)
• EC2는 Auto Scaling기능을 사용해 서버를 확장하지만 Lambda는 사용량이 늘어나면 자동으로 용량이 확
장되므로 용량 계획이 필요 없고 확장성이 뛰어남
• 다양한 프로그래밍 언어를 지원 (Node.js, Python, Java, C#, Ruby 등)
• AWS Lambda 함수는 실행당 최대 15분 동안 하도록 구성 (1초에서 15분 사이의 값으로 제한 시간을 설정)
• 동시에 처리가능한 실행 수는 1000건이며 요청을 통해 한도 증가 가능
• Lambda는 독립적으로 사용하지 않고 다른 서비스와 결합하여 사용됨
• 결합서비스: API Gateway, Kinesis, DynamoDB, SNS, SQS, S3, CloudFornt 등</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/412b8f0a-106c-42a1-a87a-1bbee3dd3eeb/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/b9e24f66-465e-464e-a665-959a8e562186/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/f82e6b7b-ba4b-4545-8218-13209740b11b/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/039c2dea-f5b0-417a-916b-7c5a2d5fe2ec/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/b952e121-4603-467f-833b-e89f8c6e6985/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/1102d57d-f147-49af-aa94-72de6f770249/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/bb89aca3-5cd9-44c2-a3a4-142a299c8263/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/de497837-7b12-49fd-9839-aae8f942a705/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/db80bffa-bd9a-4b1d-987d-58e5f4fd478e/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/605eb23e-b755-46bf-9837-cb6e1fe165e9/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/d5b4905a-ca56-4c32-99c7-fc97fa9e976a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[18. 컴퓨팅 - 컨테이너 서비스]]></title>
            <link>https://velog.io/@chloe_kim/18.-%EC%BB%B4%ED%93%A8%ED%8C%85-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%84%9C%EB%B9%84%EC%8A%A4</link>
            <guid>https://velog.io/@chloe_kim/18.-%EC%BB%B4%ED%93%A8%ED%8C%85-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%84%9C%EB%B9%84%EC%8A%A4</guid>
            <pubDate>Mon, 23 Oct 2023 16:14:49 GMT</pubDate>
            <description><![CDATA[<p><strong>Container</strong>
• 컨테이너는 애플리케이션 구성라이브러리를 패키지로 묶어서 컨테이너 엔진위에서 실행하는 것
• OS환경이 바뀌어도 구동 가능하며 각각의 컨테이너가 독립적임
• 대표적인 플랫폼으로 Kubernates와 Docker가 있음
• 마이크로서비스를 배포하는데 주로 이용
•** 마이크로서비스는 큰 서비스를 작은 서비스의 조합으로 운영하는 것**</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/9b566f59-ab01-40c8-9941-1d1bd9061247/image.png" alt=""></p>
<blockquote>
<p><strong>Amazon Elastic Container Service(ECS)</strong>
• Docker 컨테이너를 배포, 관리하는 컨테이너 오케스트레이션 서비스
_
<strong>Amazon Elastic Kubernetes Service(EKS)</strong>
• <strong>AWS에서 Kubernetes를 실행하는 서비스</strong>
• Kubernetes는 대규모 컨테이너 애플리케이션을 배포, 관리하는 데 사용하는 오픈 소스 컨테이너 오케스트레이션 시스템 
_
<strong>AWS Fargate</strong>
• 서버리스 컨테이너 서비스
• 서버 프로비저닝, 패치 적용, 클러스터 용량 관리 또는 인프라 관리를 AWS에서 자동으로 수행
• Amazon Elastic Container Service(ECS) 및 Amazon Elastic Kubernetes Service(EKS)와 연동되는 서비스
• ECS와 EKS 모두 Fargate를 통해 프로비저닝된 컨테이너를 사용하여 자동으로 컨테이너 크기를 조정(Auto Scaling)하고 로드 밸런싱 가능
_
<strong>Amazon Elastic Container Registry(Amazon ECR)</strong>
• Docker 등의 컨테이너 이미지를 공유, 배포 등의 관리 서비스
• ECR에서 공유된 이미지를 사용하여 ECS, EKS에서 컨테이너 구성</p>
</blockquote>
<p><strong>Amazon Elastic Container Service(ECS)</strong>
• Docker 컨테이너를 지원하는 컨테이너 관리 서비스
• Amazon EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행 가능
<strong>• ECS에서 애플리케이션 가용성을 유지 관리하고 애플리케이션 용량 요구 사항에 따라 컨테이너 규모를 확장하거나 축소</strong>
• CPU사용량, 메모리 사용량, 로드발란서 요청 수, EventBridge 이벤트, SQS Queue 와 결합하여 Auto Scaling 수행 가능
• Application Load Balancer 및 Network Load Balancer를 사용하여 트래픽 분산 가능</p>
<p>• ECS 시작 유형 (ECS Launch Type)
<strong>✓ Fargate 시작유형</strong>
➢ 서버리스 방식으로 Amazon ECS 워크로드를 호스팅. 사용자가 EC2 인스턴스를 관리할 필요 없음
<strong>✓ EC2 시작유형</strong>
➢ Amazon ECS 클러스터를 등록하고 사용자가 직접 관리하는 EC2 인스턴스에서 컨테이너화 된 애플리케이션을 실행
<strong>✓ ECS Anywhere</strong>
➢ Amazon ECS 클러스터에 등록하고 원격으로 관리하는 온프레미스 서버나 가상 머신(VM)에서 컨테이너화 된 애플리케이션을 실행</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/506f4cef-3296-4071-b951-e456b020d0ca/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/fe18f051-0728-46e1-af4a-732c7279def1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ca864858-1ee5-42bb-ac70-70b30bafac5d/image.png" alt=""></p>
<p>클러스터 생성 - autoscaling group (ec2)
<img src="https://velog.velcdn.com/images/chloe_kim/post/e2ba1403-4df2-4c5d-bd5d-0e2aec46614a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/6b4fecdc-5569-4741-aa9b-04b23ee143e8/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/c3c0f13f-e0a9-41f0-bd58-1291ece8e548/image.png" alt="">
인스턴스 런칭
<img src="https://velog.velcdn.com/images/chloe_kim/post/ac40ac4c-14aa-485d-a368-cd5ff3d67153/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/e7e2a2a3-b096-4acd-883d-6e16623224c2/image.png" alt=""></p>
<p>이후 테스트 만들고 &gt; 서비스 만들기!
<img src="https://velog.velcdn.com/images/chloe_kim/post/1fa6b50d-22d6-4a13-9263-9c4dfe3b9303/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/fed19555-a3ce-4dec-a7c1-d10f21d86683/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/618ab140-8033-4f68-a2e5-889043682216/image.png" alt=""></p>
<p>ec2보안그룹생성 
<img src="https://velog.velcdn.com/images/chloe_kim/post/58e664a6-cff4-4851-a3b3-2d60e7a5e929/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/2a95f112-7caf-4a3e-b354-d9f78337021d/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/d95d2501-ca1d-4530-97be-3877b9ca25fc/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/d25e6f2a-b2dd-4510-b3bc-2ea93ccd5fd2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/778285ca-32dd-4fa4-b770-fcc1d8d4b0eb/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/974b18e6-159a-458f-b57a-efd2f14b04dd/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/4cffd539-06e6-48af-9eb9-60091b870f3c/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/74a821b8-3782-46b1-b77c-3b96bf515f34/image.png" alt=""></p>
<p><strong>Amazon Elastic Kubernetes Service(EKS)</strong>
<strong>• AWS에서 Kubernetes를 실행하는 서비스
• Kubernetes는 컨테이너(Docker 등) 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 시스템
**
**• 배포 옵션</strong>
✓ Amazon EKS : 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치, 운영 및 유지 관리할 필요 없이 AWS에서 관
리 하는 AWS 클라우드에 Kubernetes 클러스터를 배포하는 옵션
✓ Amazon EKS <strong>Anywhere : 온프레미스</strong>에서 Kubernetes 클러스터를 생성하고 운영할 수 있게 해주는 배포 옵션</p>
<blockquote>
<p><strong>노드 유형 (Node Types)</strong>
<strong>✓ EKS managed node groups</strong>
➢ EKS에서 자동으로 EKS 클러스터의 노드(Amazon EC2 인스턴스) 생성 및 관리
➢ 사용자가 보안 및 업데이트 등의 일부분을 설정 및 관리 가능
➢ 모든 관리형 노<strong>드는 Amazon EKS에서 관리하는 Amazon EC2 Auto Scaling 그룹의 일부로 프로비저닝됨</strong>
➢ 관리형 노드 그룹을 생성할 때 온디맨드 또는 스팟 용량 유형을 선택할 수 있음
<strong>✓ Self managed nodes</strong>
➢ 사용자가 직접 EKS 클러스터의 노드(Amazon EC2 인스턴스) 생성 및 관리
➢ 온디맨드 또는 스팟 용량 유형을 선택할 수 있음
<strong>✓ AWS Fargate</strong>
➢ 노드 관리를 AWS에서 담당
➢ AWS에서 EKS의 모든 환경을 자동으로 관리</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/cc3b8bbb-b8c2-47be-9a92-60900308ea8d/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/cd09def9-521b-4090-96b8-a6deb08412d4/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[17. 인프라 자동화]]></title>
            <link>https://velog.io/@chloe_kim/17.-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%9E%90%EB%8F%99%ED%99%94</link>
            <guid>https://velog.io/@chloe_kim/17.-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%9E%90%EB%8F%99%ED%99%94</guid>
            <pubDate>Mon, 23 Oct 2023 15:50:15 GMT</pubDate>
            <description><![CDATA[<p><strong>CloudFormation</strong></p>
<p>• AWS인프라 세트를 수동으로 프로비저닝하면 많은 노력이 소요됨
• 예, AMI생성, EC2생성, 보안그룹적용, Auto Scaling, ALB등의 세트를 수백 대 여러 리전에 배포한다면?
• 수동 작업 말고 코드를 작성하여 자동화 한다면?
• 코드를 통해 인프라를 프로비저닝, 관리 하는 서비스가 CloudFormation (Infrastructure as Code)
• 코드를 통해 자동화 하여 AWS 인프라를 생성, 업데이트, 삭제 가능
• AWS인프라를 프로비저닝하는 비용과 시간을 절약 할 수 있음</p>
<p>• 구성 요소
✓ Template : 인스턴스 유형, AMI ID, VPC, IP 주소 등의 인프라를 구성하기 위한 설정 값이 있는 JSON 또는
YAML 형식의 텍스트 파일로 이루어진 템플릿
✓ Stack : Template을 사용하여 생성된 리소스
✓ Change Set : Stack 리소스 변경 사항에 대한 세트</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/d5da503f-dbb5-4998-97d5-c6fd957704a4/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/314f27c2-c2e6-4d4b-bbbb-664f758d99c1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/e2574475-016a-447f-a75e-3ab018f08d0a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[15.네트워크-Route53]]></title>
            <link>https://velog.io/@chloe_kim/15.%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-Route53</link>
            <guid>https://velog.io/@chloe_kim/15.%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-Route53</guid>
            <pubDate>Mon, 23 Oct 2023 13:56:58 GMT</pubDate>
            <description><![CDATA[<p><strong>DNS (Domain Name System) &amp; Route 53</strong></p>
<p>• DNS는 사람이 읽을 수 있는 도메인 이름(예: <a href="http://www.amazon.com)%EC%9D%84">www.amazon.com)을</a> 컴퓨터가 읽을 수 있는 IP 
주소(예: 192.0.2.44)로 변환하는 시스템
• Route 53은 AWS에서 제공하는 DNS (Domain Name System) 서비스
• Route 53의 기능
✓ 퍼블릭 도메인 구매 또는 이전 (.com, .net, .co.kr)
✓ AWS내부 VPC에서만 사용할 수 있는 프라이빗 도메인 생성
✓ 라우팅 정책 적용(단순 라우팅, 가중치기반, 지리적위치, 지연시간, 장애조치, 다중값 응답)</p>
<p><strong>Domain Level</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/625edba2-d5fb-4d9f-80a3-748a9374bbfc/image.png" alt=""></p>
<p><strong>DNS Resolution</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/5058be37-10a7-47c0-8238-8dd5d77affbc/image.png" alt=""></p>
<p><strong>Route53 – TTL</strong>
DNS recursive resolver(ISP 업체가 운영하는 DNS 재귀적 리졸버)가 이 레코드에 관한 정보를 캐싱할 시간(초)
<img src="https://velog.velcdn.com/images/chloe_kim/post/4dee8898-99bf-4935-8081-ad83b28f4f26/image.png" alt="">
살아있는 시간이 300초!!</p>
<blockquote>
<p><strong>주요 DNS 레코드 유형</strong>
• DNS 레코드를 통해 트래픽을 도메인에 라우팅하는 방식을 Domain Name System(DNS)에 알려줌
• A - 도메인 네임을 IPv4 주소로 라우팅 (<a href="http://www.google.com">www.google.com</a> -&gt; 192.100.10.1)
• AAAA - 도메인 네임을 IPv6 주소로 라우팅
• CNAME - 도메인 네임을 도메인 네임으로 라우팅 (site.google.com -&gt; blog.google.com)
• ALIAS - 도메인 네임을 AWS리소스로 라우팅 (<a href="http://www.google.com">www.google.com</a> -&gt; AWS EC2)
• MX(Mail eXchanger) - 이메일 서버연동시 메일의 소유를 확인하기 위한 레코드
• NS(Name Server) – DNS레코드를 가진 DNS 서버를 식별 하기 위한 레코드
• SOA(Start Of Authority) – 도메인의 정보와 권한을 가진 레코드</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/f0e86d47-44b4-4ab2-a5a5-1f8d9cc4e4b9/image.png" alt=""></p>
<p>퍼블릭도메인 생성 
<img src="https://velog.velcdn.com/images/chloe_kim/post/d37b7635-61be-4abe-928e-50556ccaf929/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/3af1c9a5-5093-44f9-8390-21d871106e7e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/47cafa6a-0147-4149-ada3-1d1fdeea2433/image.png" alt=""></p>
<p>*DNS 서비스는 도메인 네임을 IP주소로 변환해서 반환함
레코드 값 : 이 IP주소를 가지고 도메인의 호스팅 영역에 있는 것
이 레코드 값에 따라 라우팅을 할수 있음 
Route53의 DNS에는 다양한 라우팅 정책이 있음 </p>
<ol>
<li>단순 라우팅
Route53 – 라우팅 정책 – 단순 라우팅 (Simple)
• 도메인 네임 -&gt; IP주소로 라우팅
• 라우팅 대상이 여러 개(예, 2개의 IP주소)인 경우 랜덤하게 라우팅 됨
<img src="https://velog.velcdn.com/images/chloe_kim/post/7cbc796f-07f4-42e0-b191-2aeb155a72de/image.png" alt=""></li>
</ol>
<p>인스턴스 웹서개 여러개~!
퍼블릭 ip주소 
<img src="https://velog.velcdn.com/images/chloe_kim/post/7be42b42-0a9c-4f31-9fbb-1efd708c95c8/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/bfc7e6f2-9a9c-4d84-b508-edd6f4a1ff76/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/f5f4b6d1-67f3-4719-870d-067e13f2c51f/image.png" alt="">
로드밸런서 통해서 연결</p>
<p>1개 로드밸런서 - 3개의 서버 </p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/3fe6acbc-953a-4ee6-9621-1c847d0777a0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/da8a4c52-d557-44f3-b0c9-ff332f0e13d3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/3de59deb-0a48-4593-854b-865f76222bc1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/76243485-ef5b-499e-ae7f-4d96ea68d42a/image.png" alt=""></p>
<p>로드밸런스로 alias 별칭 기능
<img src="https://velog.velcdn.com/images/chloe_kim/post/2ffdcd17-3d0e-4be6-81e7-ae87b89e6a69/image.png" alt=""></p>
<ol start="2">
<li>가중치 기반 라우팅 정책
Route53 – 라우팅 정책 – 가중치 기반 (Weighted)
• 접속자가 요청하는 횟수의 가중치(%)를 기준으로 라우팅하는 방법
• 트래픽을 분산하거나 버전이 다른 애플리케이션을 테스트 하는 경우 유용
<img src="https://velog.velcdn.com/images/chloe_kim/post/a9206077-a8d1-49cb-8905-9fc73c571338/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/a2e4f8ee-7f4a-4b19-8295-ecc1299c5a11/image.png" alt=""></li>
</ol>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/5a6de760-d5d8-45dc-8f6e-ceb3d40b232d/image.png" alt=""></p>
<ol start="3">
<li>지연시간 라우팅 
• 가장 짧은 지연시간을 제공하는 리전으로 라우팅 하는 방법
<img src="https://velog.velcdn.com/images/chloe_kim/post/3b042372-14a0-46ea-95e8-38216975a280/image.png" alt=""></li>
</ol>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/6cc2a76f-6ba0-4a5e-8a42-c10c9d2fd17d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/630e736a-81fe-435b-af95-f85561852d88/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/0626af22-9f4f-4ed1-82dc-8a2cd963b01f/image.png" alt=""></p>
<ol start="4">
<li>지리적 위치 라우팅 정책
• 지연시간(Latency)기반 라우팅은 사용자와 가까운 AWS리전으로 라우팅
• 지리적 위치 라우팅은 사용자가 속한 대륙이나 국가를 기준으로 라우팅 하는 방법
• 예, 한국 또는 아시아로 부터 오는 트래픽을 지정된 서버 IP로 라우팅
<img src="https://velog.velcdn.com/images/chloe_kim/post/ded4799a-54f1-48ad-8434-e6926e3c034b/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/2a7d0357-b738-4714-ac79-b4fed4b085f4/image.png" alt=""></li>
</ol>
<p>Route53 – 상태 검사 (Health Check)
• 서버의 상태를 모니터링 하는 기능
• 상태확인을 모니터링하고 상태가 좋지 않은 경우 다른 서버로 라우팅 하는 장애조치를 구성할 수 있음
<img src="https://velog.velcdn.com/images/chloe_kim/post/cd6d3220-ac0e-40e9-bb4a-09270a25f006/image.png" alt=""></p>
<ol start="5">
<li>장애 조치 (Failover) - 기본(Primary)라우팅이 실패하면 보조(Secondary)로 자동 라우팅 되는 방식
<img src="https://velog.velcdn.com/images/chloe_kim/post/bfb3356e-591d-482d-8a34-9944d2929971/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/f2882a71-6e8e-49c5-9799-7da1c6238561/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/9b7ddc39-c691-4d99-9b62-dd797f67a66c/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/c373a68b-d2cc-444c-ba68-70e0aaf7ecfe/image.png" alt=""></li>
</ol>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/5165ea9c-ff4e-48b1-aa23-0981ed2d1b9c/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/9ac8d5c2-7be3-4700-95ae-570d2a782efd/image.png" alt="">
보조는 연결 하지 않아도됨</p>
<p>보안그룹을 바꿔서 비정상으로 만들기
<img src="https://velog.velcdn.com/images/chloe_kim/post/df414c86-9346-479f-805d-06a28c424687/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/7679adc6-07a6-4916-96a3-c99f2ef963bc/image.png" alt=""></p>
<p>레코드로 가면 - 보조 레코드로 라우팅</p>
<ol start="6">
<li>다중값 응답 라우팅 정책
• 사용자가 요청 시 Route53 DNS에서 다수의 값을 반환하는 라우팅
• 리소스의 상태 확인을 하여 DNS에서 상태확인에 따라 정상인 경우만 IP주소를 전달
<img src="https://velog.velcdn.com/images/chloe_kim/post/9bb99ef5-7f32-4d09-b7d8-4519e14edee2/image.png" alt=""></li>
</ol>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/63f8aead-63bd-49c0-bf2b-f15d938e1258/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/d96da0a9-235c-4fea-9d2c-81ba478608f6/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/2a1905b8-4460-4537-a5dc-9ba0849072a7/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/73afd118-7c02-4cdd-a75d-875ba41a54b2/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[14. 관리 및 거버넌스]]></title>
            <link>https://velog.io/@chloe_kim/14.-%EA%B4%80%EB%A6%AC-%EB%B0%8F-%EA%B1%B0%EB%B2%84%EB%84%8C%EC%8A%A4</link>
            <guid>https://velog.io/@chloe_kim/14.-%EA%B4%80%EB%A6%AC-%EB%B0%8F-%EA%B1%B0%EB%B2%84%EB%84%8C%EC%8A%A4</guid>
            <pubDate>Mon, 23 Oct 2023 12:08:34 GMT</pubDate>
            <description><![CDATA[<p>*<em>AWS Organizations
*</em></p>
<p>• 여러 AWS 계정을 중앙에서 관리
• Organizations는 글로벌 서비스
• <strong>전체 계정을 관리하는 계정을 관리계정(Master Account)</strong>라고 함
• 그** 외의 계정은 멤버 계정이라고 부름**
• 조직관리를 위해 OU(Organization Unit)이라는 조직 단위로 그룹화 하여 관리
<strong>• 그룹마다 서비스 제어 정책(SCP, Service Control Policy)를 적용해서 액세스를 제한 해야 하는 서비스를 제어할 수 있음
• 계정을 통합하면 결제를 한곳으로 통합 가능하고 볼륨 가격 할인을 받을 수 있음</strong></p>
<p>*<em>AWS Organizations - OU
*</em>
• OU(Organization Unit)이라는 조직 단위로 그룹화 하여 관리 하는 기능
• 사용중인 AWS계정을 Root OU로 초대 하여 멤버 계정으로 만들 수 있음
<img src="https://velog.velcdn.com/images/chloe_kim/post/aaceda8f-daf5-4898-804e-c80f1a55f9eb/image.png" alt=""></p>
<p><strong>AWS Organizations - SCP</strong>
• 서비스 제어정책, Service Control Policy(SCP)
• 계정에 대한 AWS 서비스 액세스 제어 정책
• 계정에 특정 AWS 서비스에 대한 액세스를 제한할 수 있음
• SCP 정책은 계정 또는 OU단위에 적용 할 수 있음
• OU에 적용하면 OU에 속한 계정과 OU는 모두 동일한 정책이 적용됨(정책상속)
<img src="https://velog.velcdn.com/images/chloe_kim/post/6d3bb251-f495-4f4c-b831-60ec1ffc3aa0/image.png" alt=""></p>
<p>기본적으로 root라는 계정이 있음
<img src="https://velog.velcdn.com/images/chloe_kim/post/1d0eb9c3-7a9f-442d-a798-5c09878d423d/image.png" alt=""></p>
<p>계정초대
<img src="https://velog.velcdn.com/images/chloe_kim/post/9641e752-c1ba-4512-ab08-7187f2652f34/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/68b91d6c-7eb5-411b-a964-15089c69123a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/30d306bc-909a-4bbc-b693-3b51a46c6750/image.png" alt=""></p>
<p>조직단위 생성 및 권한 관리 </p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ffe0379b-dea2-40a5-b410-bc2aae4d309e/image.png" alt=""></p>
<p>서비스 제어 정책
<img src="https://velog.velcdn.com/images/chloe_kim/post/99d403dc-b017-4d8f-849b-bb689955efeb/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/fa2789f4-ed45-4d33-91c6-42a73049e47c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/0f614208-fec2-4d22-b2b4-270566a78917/image.png" alt=""></p>
<p><strong>CloudWatch</strong>
• AWS 클라우드 리소스와 AWS에서 실행되는 애플리케이션을 위한 모니터링 서비스
• 지표를 수집 및 추적하고 로그 파일을 수집 및 모니터링하고 경보를 설정
• Amazon EC2 인스턴스, Amazon DynamoDB 테이블, Amazon RDS DB 인스턴스 같은 AWS 리소스뿐만 아니라 애플리케이션과 서비스에서 생성된 사용자 정의 지표 및 애플리케이션에서 생성된 모든 로그 파일을 모니터링
• 시스템 전반의 리소스 사용률, 애플리케이션 성능, 운영 상태를 파악</p>
<p><strong>지표(Metrics)</strong>
• AWS 클라우드 리소스 및 AWS에서 실행하는 애플리케이션을 모니터링
<strong>• CPU사용량, 네트워크 사용량 등의 AWS 서비스에 대한 측정값</strong>
• AWS 제품 및 서비스에 대한 지표가 자동으로 제공되며 자체 애플리케이션 및 서비스에서 생성된 사용자 정의 지표도 모니터링</p>
<p><strong>대시보드(Dashboard)</strong>
• AWS 리소스 및 사용자 정의 <strong>지표의 그래프를 한눈에 볼 수 있는 대시보드 기능</strong></p>
<p><strong>로그(Logs)</strong>
• 애플리케이션에 대한 로그를 수집하는 기능
• Lambda, CloudTrail, ECS, API Gateway 등의 AWS서비스에 대한 로그를 수집
• AWS서비스 이외에도 Log Agent를 설치하여 로그를 수집 가능
• 로그를 S3, Kinesis Data Stream, Kinesis Data Firehose, AWS Lambda로 전송 가능</p>
<p><strong>경보(Alarms)</strong>
• 지표값에 대한 알림을 생성하는 기능
• 예, Amazon EC2 인스턴스 CPU 사용률, Amazon ELB 요청 지연 시간, Amazon DynamoDB 테이블 처리량, Amazon SQS 대기열 길이, AWS 청구서 요금에 대한 알림
• 생성된 알림을 이메일을 전송하거나, SQS 대기열에 게시하거나, Amazon EC2 인스턴스를 중단 또는 종료하거나, Auto Scaling 정책을 실행하도록 경보를 설정</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/bb1047b0-66a5-4837-9e26-cfcfe1bcda75/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/62084979-f8e2-4f15-a928-820beb2d8c93/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/c3ee1d82-fa0f-4a7e-8566-52e0814c31ec/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/3a75ebd9-8b5d-48c2-bdcf-3f29984d7990/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ff5d1df8-d833-48a4-861d-2420553de38e/image.png" alt=""></p>
<p><strong>Amazone EventBridge</strong>
• 거의 실시간으로 이벤트를 자동 전송 하는 서비스
• 90개 이상의 AWS 서비스에서 이벤트를 자동 수집
• SaaS 애플리케이션 및/또는 AWS 서비스의 이벤트에 반응하는 애플리케이션을 구축하려고 할 때 사용
• 예, 이벤트 소스에 대한 EventBridge 규칙을 구성하여 Amazon SNS 주제에 메시지를 게시하여 관리자에게 이메일로 알림
<img src="https://velog.velcdn.com/images/chloe_kim/post/764ebaf5-f828-4024-b745-17865ca9f2a7/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/c9e1c7e3-e722-494f-98a2-8a47466448eb/image.png" alt=""></p>
<p><strong>CloudTrail&amp;Config</strong></p>
<p><strong>CloudTrail</strong>
•** AWS 계정이 수행하는 작업에 대해 로그를 기록하는 서비스**
• AWS 내에서 수행되는 모든 계정 활동에 대해 기록이 됨
• 로그는 CloudWatch Logs 또는 S3 버킷에 저장 가능
•** CloudTrail은 모든 계정에 기본으로 활성화 되어 있음**
• CloudTrail 로그 파일은 KMS 사용하여 암호화 가능
• CloudTrail Insight를 사용하여 AWS 계정에서 비정상적인 활동을 감지 가능
• CloudTrail 로그 파일 무결성 검증 기능을 사용하여 CloudTrail에서 로그 파일을 지정된 Amazon S3 버킷으로 전송한 이후로 CloudTrail 로그 파일이 그대로 유지되거나, 삭제되거나, 수정되었는지 확인 가능
• AWS 계정의 거버넌스, 규정준수, 운영감사, 위험감사에 활용</p>
<p><strong>Config
**•</strong> AWS 리소스 구성 변경 사항을 로그기록 하는 기능**
• 버킷액세스 변경, 보안그룹 설정변경, ALB 설정 변경 등 모든 변경 사항에 대해 로그 수집 가능
• 수집된 로그는 분석, 보안감사를 위해 S3 버킷으로 저장 가능
• 리소스 구성변경이 발생되면 알림을 SNS주제로 전송 가능
• Config 규칙을 설정해서 AWS리소스 구성이 규정준수를 하고 있는지 평가 가능</p>
<p><strong>AWS Systems Manager</strong>
• AWS 클라우드에서 실행되는 애플리케이션 및 인프라를 관리하는 데 도움이 되는 기능 모음
• 여러 AWS 서비스의 운영 데이터를 <strong>중앙집중화하고</strong> AWS 리소스 전체에서 작업을 자동화 가능
• Amazon EC2 인스턴스, 엣지 디바이스, 온프레미스, 또는 가상 머신(VM)에 SSM Agent를 설치하여 Systems Manager에서 리소스를 업데이트, 관리 및 구성 가능
• System Manager 기능</p>
<blockquote>
<p><strong>애플리케이션 관리
✓ Application Manager **
➢ 애플리케이션의 컨텍스트에서 운영 데이터(예: 개발 상태, Amazon CloudWatch 경보, 리소스 구성 및 운영 문제)를 보고, 패치 적용 및 자동화 런북 실행과 같은 수정 작업을 수행
✓ **AppConfig</strong>
➢ 애플리케이션 구성을 생성, 관리 및 빠르게 배포
✓** Parameter Store 
**➢ 구성 데이터 관리 및 암호 관리를 위한 스토리지. 
➢ 암호, 데이터베이스 문자열, (AMI) ID, 라이선스 코드와 같은 데이터를 파라미터 값으로 저장
➢ 값을 일반 텍스트 또는 암호화된 데이터로 저장 가능</p>
</blockquote>
<blockquote>
<p><strong>변경 관리</strong>
<strong>✓ Automation :</strong>
➢ 유지 관리 및 배포 태스크를 자동화. 
➢ AMI 생성 및 업데이트, 드라이버 및 에이전트 업데이트를 적용, Windows Server 인스턴스에서 암호를 재설정, Linux 인스턴스에 서 SSH 키를 재설정, OS 패치 또는 애플리케이션 업데이트를 적용
<strong>✓ Change Manager :</strong>
➢ 애플리케이션 구성 및 인프라에 대한 운영 변경을 요청, 승인, 구현 및 보고하기 위한 엔터프라이즈 변경 관리 프레임워크
*<em>✓ Maintenance Windows : *</em>
➢ 운영 체제 패치, 드라이버 업데이트, 소프트웨어 또는 패치 설치와 같이 노드에서 중단 가능성이 있는 작업 수행 시기에 대한 일정
을 정의</p>
</blockquote>
<blockquote>
<p><strong>노드 관리
✓ Fleet Manager : **
➢ 온프레미스 또는 클라우드에서 실행하는 플릿을 관리. 
➢ 하나의 콘솔에서 전체 서버 플릿의 상태 및 성능 상태를 볼 수 있으며 개별 노드(서비스, 장치 또는 기타 리소스)로 액세스하여 콘솔에서 디스크 및 파일 탐색, 로그 관리, Windows 레지스트리 작업, 사용자 관리와 같은 일반적인 시스템 관리 태스크를 수행
✓</strong> Session Manager :** 
➢ 인바운드 포트를 열고, Bastion 호스트를 유지하고, SSH 키를 관리할 필요 없이 보안성과 감사 가능성을 갖춘 엣지 디바이스 및 인스턴스 관리 기능을 제공. 
➢ 인스턴스 원격접속 기능
*<em>✓ Patch Manager : *</em>
➢ 대규모 클라우드 그룹 또는 온프레미스 인스턴스 및 엣지 디바이스에서 운영 체제 및 소프트웨어 패치를 자동으로 선택하고 배포</p>
</blockquote>
<blockquote>
<p><strong>운영관리</strong>
*<em>✓ Explorer *</em>
➢ AWS 리소스에 대한 정보를 보고하는 사용자 지정 가능한 운영 대시보드
*<em>✓ OpsCenter *</em>
➢ OpsItem이라는 운영 문제를 집계하고 표준화하는 동시에 진단 및 해결에 도움이 되는 상황에 맞는 데이터를 제공
➢ 이벤트, 리소스, 계정, Config 변경사항, CloudTrail로그, CloudWatch정보 등
*<em>✓ Incident Manager *</em>
➢ AWS 호스팅 애플리케이션에서 발생하는 인시던트를 관리. 
➢ 사용자 참여, 에스컬레이션, 실행서, 대응 계획, 채팅 채널 및 인시던트 후 분석을 결합하여 팀이 인시던트를 더 빠르게 분류하고
애플리케이션을 정상 상태로 되돌릴 수 있도록 지원</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[13. 보안 및 자격증명]]></title>
            <link>https://velog.io/@chloe_kim/13.-%EB%B3%B4%EC%95%88-%EB%B0%8F-%EC%9E%90%EA%B2%A9%EC%A6%9D%EB%AA%85</link>
            <guid>https://velog.io/@chloe_kim/13.-%EB%B3%B4%EC%95%88-%EB%B0%8F-%EC%9E%90%EA%B2%A9%EC%A6%9D%EB%AA%85</guid>
            <pubDate>Mon, 23 Oct 2023 08:26:29 GMT</pubDate>
            <description><![CDATA[<p><strong>AWS Cognito, AWS Single Sing-On</strong></p>
<p><strong>AWS Cognito</strong>
• 애플리케이션에 대한 로그인 및 인증을 제공하는 기능
• 웹과 모바일 앱에 빠르고 사용자 가입, 로그인 및 액세스 제어 기능
• 애플, 구글, 페이스북 등의 계정과 통합 가능</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/77a91896-e1ee-41cf-a39e-8dab6700b755/image.png" alt=""></p>
<p><strong>AWS Single Sing-On(SSO)</strong>
• SSO는 중앙에서 관리하는 하나의 계정으로 여러 애플리케이션에 로그인하는 기능
• AWS Organization, Active Directory, SAML 2.0 과 통합 가능
• SAML은 인증을 지원하기 위한 표준 데이터 포맷</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/15be9892-8935-4cc3-b132-9a5e1070415f/image.png" alt=""></p>
<p><strong>Key Management Service(KMS)</strong></p>
<p>암호화 (Encryption)
• 데이터를 도난이나 해킹으로부터 보호하기 위한 방법
• 3가지 암호화 방법
✓ 전송중 암호화: 네트워크로 전송하는 트래픽을 암호화
✓ 서버측 암호화: 서버에 저장된 데이터를 암호화
✓ 클라이언트측 암호화: 데이터를 보내기전에 암호화</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/49e007c4-d2d8-4131-98fc-7bcc25269bd3/image.png" alt=""></p>
<p><strong>Key Management System (KMS)</strong> 소프트웨어 방식의 암호화
• 암호화 키를 생성 및 관리하는 서비스
• 키(Key)는 암호화를 하고 암호를 해독하는 역할
• AWS에서 암호화에 관련된 서비스는 대부분 KMS와 관련되어 있음
• EBS, S3, RDS등의 AWS 서비스 데이터 암호화에 KMS 사용
• <strong>키를 자동교체 하는 기능 지원</strong>
• 감사를 위해 <strong>AWS CloudTrail</strong>과도 통합되어 모든 키 사용에 관한 로그를 제공</p>
<blockquote>
<p>• 3가지 유형의 키 제공
<strong>고객 관리형 키(Customer managed keys) **
✓ 사용자가 생성, 소유 및 관리하는 AWS 계정의 KMS 키
✓ 키 정책, IAM 정책 및 권한 부여, 암호화 구성요소 등의 제어 권한을 사용자가 가짐
*<em>AWS 관리형 키(AWS managed keys) *</em>
✓ AWS 서비스가 고객의 계정에서 고객 대신 생성, 관리 및 사용하는 KMS 키
✓ 키 정책, 키 삭제 등의 제어 권한이 없거나 제한이 있음
**AWS의 키(AWS owned keys)</strong>
✓ AWS 서비스가 여러 AWS 계정에서 사용하기 위해 소유하고 관리하는 KMS 키 모음</p>
</blockquote>
<p>**
CloudHSM**
하드웨어 방식의 암호화
• KMS는 AWS에서 관리하는 소프트웨어 방식의 암호화
• CloudHSM은 AWS에서 제공하는 하드웨어 암호화 장비를 통한 하드웨어 방식의 암호화
• KMS와 다르게 암호화 키관리는 사용자(클라이언트)가 해야함
• 고객 제공 키(SSE-C, Customer Provided Keys)에 적합한 방식</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/36775489-5de9-420f-904b-081d4e6dcb1f/image.png" alt=""></p>
<p><strong>KMS 다중 리전 키 (Multi-Region Keys)</strong>
• <strong>여러 리전에서 동일한 키를 가지고 있는 것</strong>
• 다중 리전 키의 각 세트에는 동일한키 구성 요소와 키 ID가 있으므로 AWS KMS를 다시 암호화하거나 크로스 리전 호출을 수행하지 않고 하나의 AWS 리전에서 데이터를 암호화하고 다른 AWS 리전에서 복호화 가능
• 예를 들어 아시아 태평양(시드니)의 복제본 키를 사용하여 데이터를 암호화하고, 데이터를 미국 서부(오레곤)로 이동한 다음, 미국 서부(오레곤)의 복제 키를 사용하여 암호를 복호화
• <strong>동일한 키를 사용하면 다른 리전의 데이터를 서로 다른 키로 다시 암호화 할 필요가 없음</strong>
• Amazon DynamoDB 글로벌 테이블 및 DynamoDB 암호화, 멀티 리전의 복제된 S3 버킷의 암호화 등에 사용 가능</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/42225ecb-80a7-4cb2-a04d-6fe4606ee643/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/220f03c8-f6b7-4a95-9eb9-8ae40ca35704/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/aba9a659-6003-4c69-bc85-466c683f29d5/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/b1319746-2f29-48a6-ba70-087c40330d37/image.png" alt=""></p>
<p>권한정의 가능 - 사용자나 역할을 정할 수 있음
<img src="https://velog.velcdn.com/images/chloe_kim/post/befff336-c61f-417e-8a72-8fdba28be91b/image.png" alt=""></p>
<p>키를 사용할수 있는 사람을 별도로 지정할수도 있음 </p>
<p>키를가지고 암호화로 사용하면 됨 </p>
<p>고객관리형키는 키의 관리자, 삭제, 액세스 컨트롤이 가능함 </p>
<p><strong>Secrets Manager</strong>
• <strong>보안 정보(자격증명)를 중앙 집중식으로 저장, 검색, 액세스 제어, 교체, 감사 및 모니터링하는 서비스
• 보안정보는 데이터베이스 자격 증명, 온프레미스 리소스 자격 증명, SaaS 애플리케이션 자격 증명, 타사
API 키 및 Secure Shell(SSH) 키 등이 될 수 있음</strong>
• 보안정보(자격증명,Secret)을 유지하는 방법
✓ 사용자가 소유하고** AWS Key Management Service(KMS)에 저장한 암호화 키를 사용해** 저장 보안 정보를 암호화
✓ 사용자는** AWS Identity and Access Management(IAM) 정책을 사용하여 보안 정보에 대한 액세<strong>스를 제어
✓ 사용자가 보안 정보를 검색하면 Secrets Manager가 해당 보안 정보를 복호화하여 TLS를 통해 안전하게 로컬 환경으로 전송
•</strong> 보안정보(자격증명)을 자동으로 교체 및 관리 가능**
✓ Amazon RDS, Amazon Redshift 및 Amazon DocumentDB와 기본적으로 통합되며 사용자 대신 이러한 데이터베이스 자격 증명을 자동으로 교체
✓** Lambda의 코드와 통합하여 30일, 60일 등의 자격증명 자동교체 날짜를 지정하여 실행가능**</p>
<p><strong>AWS Certificate Manager(ACM)</strong>
• <strong>SSL/TLS 인증서를 중앙에서 관리하는 서비스</strong>
• AWS 리소스에 사용할 공인 및 사설** SSL/TLS(Secure Sockets Layer/전송 계층 보안) 인증서**를 관리 및 배포
할 수 있음
• SSL/TLS 인증서는 ACM에서 자동으로 갱신 됨</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/49d8dfc8-d274-4f2a-9095-64feea093e41/image.png" alt=""></p>
<p><strong>Shield &amp; WAF</strong></p>
<p><strong>Shield</strong> : AWS웹 애플리케이션을 DDoS(Distributed Denial of Service) 공격으로부터 보호
DDoS(Distributed Denial of Service) 공격
수십 대에서 많게는 수백만 대의 PC를 원격 조종해 특정 웹사이트에 동시에 접속시킴으로써 단
시간 내에 과부하를 일으키는 행위</p>
<p>Shield는 2가지 유형을 제공
Shield Standard
✓ 모든 AWS사용자에게 적용되어 있음(무료)
✓ SYN/UDP Flood등 기본적인 DDoS공격 보호</p>
<p>Shield Advanced
✓ 스탠다드 서비스보다 많은 보호 제공 (유료)
✓ EC2, ELB, CloudFront, Route53등에서 정교한 DDoS 보호제공</p>
<p><strong>WAF – Web Application Firewall
**
• 웹 애플리케이션을 보호하는 방화벽
• **HTTP (OSI 7계층)에서 동작</strong>
• Application Load Balancer, API Gateway, CloudFront에 적용 가능
• WAF의 Web ACL(Access Control List)를 통해 정의할 수 있는 기능
✓ 악성 IP 주소차단
✓ 특정 국가의 엑세스 제어(차단)
✓ SQL Injection, Cross-Site-Scripting(XSS) 방어
✓ 속도기반규칙(Rate-based rules)으로 DDoS공격방어
**
AWS Firewall Manager**
AWS Organizations의 여러 계정과 애플리케이션의 <strong>방화벽 규칙을 중앙에서 구성 및 관리할 수 있는 보안
관리 서비스</strong>
• 중앙의 관리자 계정에서 <strong>방화벽 규칙</strong>을 수립하고, 보안 정책을 생성하며, 전체 인프라에 걸쳐 중앙에서 적
용 가능
• 중앙에서 여러 AWS 계정 및 리소스에 걸쳐 있는 Amazon VPC에 대해 AWS WAF 규칙, AWS Shield 
Advanced 보호, 보안 그룹 및 AWS Network Firewall 규칙 및 AWS Marketplace 서드 파티 방화벽 규칙 및 Amazon Route 53 Resolver DNS Firewall 규칙을 중앙에서 구성 가능</p>
<p>###실습 필요</p>
<p>GuardDuty, Macie, Inspector</p>
<p><strong>Amazon GuardDuty**</strong>
• AWS 계정 및 <strong>워크로드에서 악의적 활동을 모니터링하고 상세한 보안 결과를 제공하는 위협 탐지 서비스</strong>
• 공격자 정찰, 인스턴스 침해, 계정 침해 및 버킷 침해와 같은 위협을 파악하도록 지원하여 AWS 계정, 워크로드 및 데이터에 대한 광범위한 보호를 제공
• 보안 탐지 결과를 GuardDuty 콘솔과 <strong>Amazon CloudWatch Events로 전달하여 알림을 토대로 조치를 취할 수 있고 기존 이벤트 관리 또는 워크로드 시스템에 통합 가능</strong></p>
<p>실제 방어는 할 수는 없음</p>
<p>**
Amazon Macie**
• 데이터 보안 및 데이터 프라이버시 서비스로서, 기계 학습 및 패턴 일치를 활용하여** AWS에서 민감한 데이터를 검색하고 보호**
• <strong>이름, 주소 및 신용 카드 번호와 같은 개인 식별 정보(PII)를 포함하여 대규모의 점점 증가하는 민감한 데이터 유형 목록을 자동으로 감지</strong>
• S3 버킷에 기계 학습 및 패턴 매칭 기법을 적용하여 개인 식별 정보(PII)와 같은 민감한 데이터를 식별하고 사용자에게 알릴 수 있음</p>
<p>**
<strong>Amazon Inspector**</strong>
• <strong>Amazon Elastic Compute Cloud(EC2) 및 컨테이너 워크로드에서 소프트웨어 취약성과 의도하지 않은 네트워크 노출을 지속적으로 스캔하는 자동화된 취약성 관리 서비스</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[12. 애플리케이션 통합]]></title>
            <link>https://velog.io/@chloe_kim/12.-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%ED%86%B5%ED%95%A9</link>
            <guid>https://velog.io/@chloe_kim/12.-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%ED%86%B5%ED%95%A9</guid>
            <pubDate>Sun, 22 Oct 2023 15:31:54 GMT</pubDate>
            <description><![CDATA[<p><strong>Simple Queue Service (SQS)</strong>
• Queue는 대기한다는 의미
• SQS는 메시지를 대기하는 기능
• 애플리케이션 간에 느슨한 결합 제공(decoupling)
• 시나리오: 쇼핑몰 주문</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/addc3af9-818b-41ca-bd06-5e4f3dbee797/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/7255ac4a-838e-4813-993d-ba9f8eeed513/image.png" alt=""></p>
<p><strong>SQS Queue</strong>
• SQS는 Poll 방식으로 메시지를 전송 (Consumer가 메시지를 요청하여 받는 방식)
• Consumer 가 메시지를 소비하면 SQS Queue에서는 메시지가 삭제됨
<img src="https://velog.velcdn.com/images/chloe_kim/post/26c74bc7-e225-44eb-93f8-bc63f707b853/image.png" alt="">
**
SQS - 표준대기열 vs FIFO 대기열**
<img src="https://velog.velcdn.com/images/chloe_kim/post/d6f7ef42-b993-4e8c-8a02-c3dabe75c5c4/image.png" alt=""></p>
<p><strong>SQS – 배달 못한 편지 대기열 **(DLQ, Dead Lett</strong>er Queue)**
• 일반적으로 메시지는 처리될 때까지 계속 메시지를 보냄
• 이 경우 다른 메시지처리까지 영향을 줄 수 있음
• 일정 횟수 이상 시도 후 처리되지 못한 메시지는 DLQ로 이동하여 보관
<img src="https://velog.velcdn.com/images/chloe_kim/post/61af170f-2ec7-4723-b8b4-cec63e17e54b/image.png" alt=""></p>
<p><strong>SQS - 제한 시간 초과/표시 제한 시간(Visibility Timeout)</strong>
• 메시지소비자가 대기열에서 메시지를 수신하고 처리하면 메시지는 계속 대기열에 있음
• 연결 문제 또는 메시지소비자의 애플리케이션 문제로 인해 메시지를 다시 수신해야 할 수 있기에 Amazon SQS에서 메시지를 자동으로 삭제하지 않음
• 소비자는 메시지를 수신하고 처리한 후 대기열에서 이 메시지를 삭제해야 함
• <strong>제한 시간 초과는 메시지 소비자가 메시지를 수신 후 다른 소비자가 메시지를 다시 처리하지 못하게 하기위한 기간 **(</strong>SQS에서 다른 소비자가 메시지를 수신하고 처리할 수 없도록 차단하는 기간)**
• 메시지의 기본 <strong>제한 시간은 30초 (최소는 0초, 최대 시간은 12시간)</strong></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/a427b86f-271a-4a49-8670-8530f259e24a/image.png" alt=""></p>
<p><strong>**SQS – Short Polling(짧은 폴링) vs. Long Polling(긴 폴링)</strong>
• 폴링은 SQS Queue로부터 메시지를 가져오는 방법 (Consumer가 메시지를 요청)
• Short Polling(디폴트 값)은 메시지 queue가 비어 있어도 메시지 소비자의 메시지 요청을 즉시 반환하는 방법
• Long Polling은 queue에 메시지가 비어있으면 메시지가 도착할 때까지 또는 메시지 수신 대기시간 (Receive message wait time)이 완료 될 때 까지 메시지 요청을 기다림
• 메시지 수신 대기시간은 1초 부터 최대 20초까지 설정 가능
• <strong>Long Polling을 사용하면 빈 응답의 수를 제거하여 Amazon SQS 사용 비용을 절감할 수 있음</strong>
• 예, API <strong>요청 수를 감소시켜 효율성 향상 및 애플리케이션의 지연시간 감소</strong></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/5adb9ac8-39c8-4064-977a-4beea81aaf40/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/fd2a94bc-74e7-4e8c-b244-02d68732d3d6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/72d5c6ea-b433-4b71-b28d-2d069fc84adb/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/295fcff6-92ec-4c34-9173-c5147739ae57/image.png" alt=""></p>
<p><strong>Simple Notification Service (SNS)</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/8f6b25d9-f0e7-40a1-9e22-e4e130aca442/image.png" alt="">
• 메시지 전송 서비스
• 게시자(Publishers)에서 구독자, Subscriber(생산자 및 소비자 라고도 함)
로 메시지를 전송
• 애플리케이션 간(A2A) 및 애플리케이션과 사용자 간(A2P) 통신
• <strong>SNS는 Push 방식으로 메시지를 전송(Subscriber에게 메시지를 보내는 방식)</strong>
• 전송 순서</p>
<ol>
<li>SNS에서 주제(Topic) 생성</li>
<li>구독 생성(메시지를 받는 사람) </li>
<li>메시지 생성</li>
<li>구독자에게 메시지 전달</li>
</ol>
<p><strong>SNS + SQS Fan Out</strong>
• Amazon SQS와 Amazon SNS는 둘 다 AWS 내 메시징 서비스
• Amazon SNS를 사용하면 애플리케이션에서 정기적으로 업데이트를 확인하거나 ‘폴링(Polling)&#39;할 필요 없이** ‘푸시(Push)&#39; <strong>메커니즘을 통해 다수의 구독자에게 메시지를 보낼 수 있음
• **Amazon SQS는 분산 애플리케이션에서 폴링 모델을</strong> 통해 메시지를 교환하는 데 사용되는 메시지 대기열
서비스. 이 서비스를 통해 송신 구성 요소와 수신 구성 요소를 분리</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/9f38409d-55a9-4737-8732-0a0e88bf90be/image.png" alt=""></p>
<blockquote>
<p><strong>SNS FIFO Topic</strong>
• SNS FIFO 주제는 메시지가 주제에 게시된 정확한 순서로 구독된 Amazon SQS FIFO 대기열에 메시지를 전달
• SQS FIFO 대기열을 사용하면 대기열의 소비자는 메시지가 대기열로 전송된 정확한 순서로 메시지를 수신
• 예, 은행 거래 로그, 주식 시세 표시기, 항공편 추적기, 가격 업데이트, 뉴스 브로드캐스팅, 인벤토리 관리
<img src="https://velog.velcdn.com/images/chloe_kim/post/5a525207-56f3-4b5e-9671-fee179695266/image.png" alt=""></p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/d7450a6c-cab4-411d-9325-17db93a71544/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/719a55ef-2286-4864-a2ce-2570dd639217/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/bb40eef1-8e1a-4f76-87b6-338f9fa7d850/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/c4e000ce-c1e8-4f01-ad2f-31b0c462516f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/9b2e110a-5aab-42f0-b1ba-5fd61ab3ae59/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/2fa322db-5d57-43ee-8522-81f82d5af613/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/13b06705-a5b3-4d50-8198-1f5eee047e7f/image.png" alt="">
**
Kinesis**</p>
<p>실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석 하는 서비스
• 비디오, 오디오, 애플리케이션 로그, 웹 사이트 클릭스트림 및 IoT 텔레메트리 데이터와 같은 실시간 데이
터를 수집
• 데이터가 수집된 후에야 처리를 시작할 수 있는 것이 아니라 데이터가 <strong>수신되는 대로 처리</strong> 및 분석</p>
<p>• Kinesis 서비스 유형
✓** Kinesis Data Streams<strong>: 데이터 스트림을 수집, 저장 및 처리
✓</strong> Kinesis Data Firehose<strong>: 데이터 스트림을 AWS 데이터 스토어에 로드 (저장기능은 없음)
✓ **Kinesis Data Analytics</strong>: SQL 또는 Apache Flink로 데이터 스트림 <strong>분석</strong>
✓ Kinesis Video Streams: 비디오 스트림을 수집, 저장 및 처리</p>
<blockquote>
<p><strong>Kinesis Data Streams</strong>
• 데이터 스트림을 캡처, 처리 및 저장할 수 있는 스트리밍 데이터 서비스
• 실시간(Realtime) 서비스
• Amazon DynamoDB, Amazon Aurora, Amazon CloudWatch 및 AWS IoT Core와 같은 AWS 서비스의 기존 리소스에서 데이터를 보낼 수 있음
• 스트리밍 데이터를 AWS Lambda, Amazon Kinesis Data Analytics, Amazon Kinesis Data Firehose 등으로 전송
• <strong>데이터 스토리지</strong>가 있음 (1일 ~ 365일 사이의 기간으로 데이터 보관)
<img src="https://velog.velcdn.com/images/chloe_kim/post/84f493cb-3a55-43c6-a6ea-21b23b1aa826/image.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>Kinesis Data Firehose</strong> (ETL 솔루션임)
• 스트리밍 ETL(extract, transform, and load) 솔루션
• <strong>스트리밍 데이터를 데이터 스토어와 분석 도구에 로드</strong>
• 스트리밍 데이터를 캡처하고 변환한 후 Amazon S3, Amazon Redshift, Amazon OpenSearch Service 및
Splunk로 로드하여 비즈니스 인텔리전스 도구 및 대시보드를 통해 거의 실시간으로 분석
• 거의 실시간(Near Realtime) 서비스
• <strong>데이터 스토리지가 없음 (데이터를 저장하지 않음)</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/be787529-35d9-4412-a017-00fbeae6f2a0/image.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>Kinesis Data Analytics</strong>
• SQL 또는 Apache Flink를 사용하여 실시간으로 스트리밍 데이터를 변환하고 분석
• Apache Flink는 데이터 스트림 처리를 위한 오픈 소스 프레임워크 및 엔진
• Amazon Kinesis Data Streams 및 Amazon Kinesis Data Firehose 스트리밍 소스로부터의 데이터 수집 가능
<img src="https://velog.velcdn.com/images/chloe_kim/post/1a5753fc-0e4e-4ffd-9f60-46b364f885a1/image.png" alt=""></p>
</blockquote>
<p><strong>Amazon MQ</strong>
• <strong>Apache ActiveMQ 및 RabbitMQ</strong>용 관리형 <strong>메시지 브로커 서비스</strong>
• JMS 및 NMS와 같은 업계 표준 API와 AMQP, STOMP, MQTT, WebSocket 등을 비롯한 메시징 프로토콜을
지원
• <strong>활성(Active)/대기(Standby) 브로커 배포모드를 지원하여 고가용성 및 장애조치 가능</strong>
• 클라우드 기반의 애플리케이션은 SNS, SQS 메시지 서비스를 사용하는 것을 추천 (스케일링, 고가용성, 더
나은 성능, 더 많은 기능 등)
<strong>• 기존에 Apache ActiveMQ 및 RabbitMQ 등의 애플리케이션을 온프레미스에서 사용하고 있고 코드의 변경 없이 클라우드로 마이그레이션 할 경우 Amazon MQ 사용</strong></p>
<p><strong>API Gateway</strong>
• 개발자가 API를 생성, 게시, 유지 관리, 모니터링 및 <strong>보안 유지를 할 수 있게 하는 서비스</strong>
• API: Application Programming Interface 
• RESTful API 및 WebSocket API를 지원
• 예, 애플리케이션이 API를 통해 백엔드 시스템 및 데이터에 액세스 하여 통신</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/36e505f5-b69a-405c-aaba-609591278ce8/image.png" alt=""></p>
<p>*<em>AWS Step Functions &amp; Amazon AppFlow
*</em></p>
<p>• 시각적 워크플로(workflow) 구축 서비스
• 애플리케이션의 구성 요소를 단계별로 배열 하여 다단계 애플리케이션을 구축하고 실행
• 사용 예
✓ 데이터 처리: 여러 데이터베이스의 데이터를 통일된 보고서로 통합, 분석 및 기계 학습 워크플로 조정
✓ DevOps 및 IT 자동화: 지속적 통합 및 지속적 배포를 위한 도구 구축, 인프라의 변경에 자동으로 대응하는 이벤트 중심 애플리케이
션 생성
✓ 전자 상거래: 주문 처리, 재고 추적 등 프로세스 자동화
✓ 웹 애플리케이션: 강력한 사용자 등록 프로세스와 로그인 인증 구현
<img src="https://velog.velcdn.com/images/chloe_kim/post/9b18e8ed-80d3-4471-9122-8db568492eab/image.png" alt=""></p>
<p><strong>Amazon AppFlow</strong>
• <strong>Software-as-a-Service(Saas) 애플리케이션과 AWS 간에 안전하게 데이터를 전송할 수 있게 해주는 서비스</strong>
• SaaS 애플리케이션과 데이터를 교환하기 위해 AWS 서비스용 API 커넥터를 구축(코드 작성)하고 관리할
필요 없음
• 소스: Salesforce, SAP, Zendesk, Slack 및 ServiceNow와 같은 서비스형 소프트웨어(SaaS) 애플리케이션
• 대상: Amazon S3 및 Amazon Redshift와 같은 AWS 서비스
• 일정에 따라, 비즈니스 이벤트에 대한 응답으로 또는 온디맨드로 데이터 플로우를 실행 가능
<img src="https://velog.velcdn.com/images/chloe_kim/post/6281f576-9452-4c7f-ad54-0608d88aa650/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[11. 데이터 분석 서비스 ]]></title>
            <link>https://velog.io/@chloe_kim/11.-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%84%9C%EB%B9%84%EC%8A%A4</link>
            <guid>https://velog.io/@chloe_kim/11.-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%84%9C%EB%B9%84%EC%8A%A4</guid>
            <pubDate>Sun, 22 Oct 2023 15:07:25 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>Amazon Athena</strong>
• 표준 SQL을 사용해 Amazon <strong>S3</strong>에 저장된 데이터를 분석할 수 있는 쿼리 서비스
• Athena로 데이터를 로드 할 필요 없이 S3에 저장된 데이터를 직접 사용
• CSV, JSON, ORC, Avro 또는 Parquet와 같은 다양한 종류의 데이터 형식을 지원
• 예, S3에 csv 데이터 파일을 저장하여 Athena를 사용해 SQL 쿼리를 하는 비용 효율적인 솔루션 구축
• Athena 연합 쿼리를 사용하여 Amazon CloudWatch Logs, Amazon DynamoDB, Amazon DocumentDB, 
Amazon RDS, JDBC 호환 관계형 데이터베이스(Apache 2.0 라이선스에 따른 MySQL, PostgreSQL 등)와 같은 데이터 원본에 저장된 데이터에 대해 SQL 쿼리 수행 가능
• <strong>Amazon QuickSight와 통합하여 쿼리된 데이터를 시각화 할 수 있음</strong></p>
</blockquote>
<blockquote>
<p><strong>Amazon Redshift</strong>
• <strong>데이터웨어하우스 서비스</strong>
• 데이터 웨어하우스는 의사 결정을 위한 정보의 집합
• 데이터 웨어하우스는 여러 소스로부터 얻은 구조화되거나 반 구조화된(정형 및 반정형) 대량의 데이터를 중앙 집중화 및 통합 하여 데이터 웨어하우스의 분석 기능을 통해 데이터에서 귀중한 비즈니스 통찰력을 도출 하여 의사결정을 개선
• Amazon S3, Amazon RDS, Amazon DynamoDB, Amazon Kinesis Data Firehose, Amazon EMR, AWS Glue, AWS Data Pipeline 및 Amazon EC2 또는 온프레미스의 모든 SSH 지원 호스트를 비롯하여 다양한 데이터 소스에서 Amazon Redshift로 데이터를 로드
• 비즈니스 애널리스트, 데이터 엔지니어, 데이터 사이언티스트 및 의사 결정권자는 비즈니스 인텔리전스(BI) 
도구(예, Amazon QuickSight), SQL 클라이언트 및 기타 분석 응용 프로그램을 통해 데이터에 액세스</p>
</blockquote>
<blockquote>
<p><strong>Amazon OpenSearch Service (Amazon Elastic Search Service)</strong>
• OpenSearch는 Elasticsearch에서 파생된 오픈 소스 분산 검색 및 분석 제품
• <strong>로그 분석, 실시간 애플리케이션 모니터링 및 웹사이트 검색 등을 쉽게 수행할 수 있게 해주는 서비스</strong>
• 다양한 소스에서 스트리밍 데이터를 Amazon OpenSearch Service 도메인으로 로드
✓ <strong>Amazon Kinesis Data Firehose 및 Amazon CloudWatch Logs와 같은 일부 소스는 OpenSearch Service 를 기본으로 지원</strong>
✓ Amazon S3, Amazon Kinesis Data Streams 및 Amazon DynamoDB와 같은 다른 소스는 AWS Lambda 함수를 이벤트 핸들러로 사용하여 로드</p>
</blockquote>
<blockquote>
<p><strong>AWS QuickSight</strong>
• <strong>클라우드 기반의 비즈니스 인텔리전스(BI) 도구</strong>
• 대시보드, 그래프 등의 시각화를 통한 데이터 분석을 통해 의사결정을 도와주는 서비스
• AWS 데이터, 타사 데이터, 빅 데이터, 스프레드시트 데이터, SaaS 데이터, B2B 데이터 등의 다양한 데이터 소스와 연결 가능
• CSV 파일과 Excel 파일을 업로드하고, Salesforce와 같은 SaaS 애플리케이션에 연결하고, SQL Server, MySQL 및 PostgreSQL과 같은 온프레미스 데이터베이스에 액세스하고, Amazon Redshift, Amazon RDS, Amazon Aurora, Amazon Athena 및 Amazon S3와 같은 AWS 데이터 소스를 원활하게 검색
<img src="https://velog.velcdn.com/images/chloe_kim/post/4c82a931-0804-4b48-82e6-8a66eb7a6ddd/image.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>AWS Glue</strong>
• 데이터 분석을 위한 ETL(Extract, Transform and Load, 추출, 변환 및 로드 ) 서비스
• 다양한 소스에서 데이터 검색 및 추출, 데이터 강화, 정리, 정규화 및 결합, 데이터베이스, 데이터 웨어하우스 및 데이터 레이크에 데이터 로드 및 구성 등의 여러 작업을 포함
<img src="https://velog.velcdn.com/images/chloe_kim/post/74c47350-5845-4484-bc82-d81890108725/image.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>AWS Lake Formation</strong>
• 데이터 레이크 서비스
• 데이터 레이크는 조화되거나 반구조화되거나 구조화되지 않은 모든 유형의 대량의 데이터를 저장, 처리, 보호하기 위한 중앙 집중식 저장소
<img src="https://velog.velcdn.com/images/chloe_kim/post/aa0d8dc8-1b71-4993-879d-59da42490710/image.png" alt=""></p>
</blockquote>
<blockquote>
<p><strong>Amazon EMR(Elastic MapReduce)</strong>
• 클라우드 빅데이터 플랫폼
• MapReduce는 분산 병렬처리 컴퓨팅 모델의 이름
• <strong>EMR은 빅데이터 플랫폼인 Hadoop 클러스터를 손쉽게 생성해 주는 서비스</strong>
•** Apache Spark, Apache Hive 및 Presto와 같은 오픈 소스 프레임워크를 사용**
• 데이터 처리를 위한 EMR 클러스터(수십 ~ 수백 대의 EC2 인스턴스)를 자동으로 구성하고 확장 및 축소를 하는 기능을 함
• 머신러닝, 빅데이터 처리 등에 사용</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[10. 데이터베이스]]></title>
            <link>https://velog.io/@chloe_kim/10.-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4</link>
            <guid>https://velog.io/@chloe_kim/10.-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4</guid>
            <pubDate>Sun, 22 Oct 2023 14:51:48 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>관계형 데이터베이스 (RDS)
<img src="https://velog.velcdn.com/images/chloe_kim/post/446f66ec-c092-4315-bb13-6f3787adfdac/image.png" alt="">
• 데이터들이 서로 연결되어 관계들로 구성된 데이터베이스
• 데이터를 테이블 형태(&#39;스키마&#39;라고 부른다)로 관리 하여 관계를 통해서 연결된 여러 테이블에 분산
• SQL 언어를 사용하여 데이터를 검색 및 조작
• 데이터를 중복없이 다루기에 데이터 무결성이 보장
• 관계를 맺고 있는 데이터가 자주 변경 되는 애플리케이션에서 주로 사용
• Amazon RDS, Amazon Aurora 가 대표적인 서비스</p>
</blockquote>
<blockquote>
<p>NoSQL = non-SQL = non relational database
<img src="https://velog.velcdn.com/images/chloe_kim/post/c24b6f45-f58d-40c2-b4f1-b599eca86df5/image.png" alt="">
• NoSQL = non-SQL = non relational databases
• 관계 구조를 갖지 않는 데이터베이스 관리 시스템
• 관계 구조가 없기에 대규모의 데이터를 유연하게 처리할 수 있는 것이 강점
• NoSQL 데이터 베이스는 Key-Value Database, Document Database, Column Family Database, Graph 
Database 종류가 있음
• 대표적인 AWS Key-Value 데이터 베이스는 Amazon DynamoDB</p>
</blockquote>
<blockquote>
<p>인 메모리 데이터베이스
<img src="https://velog.velcdn.com/images/chloe_kim/post/cf1372a9-1338-4101-8dd3-1a22677f099d/image.png" alt=""></p>
</blockquote>
<p>• 디스크가 아닌 주 메모리에 데이터를 보유하고 있는 데이터베이스
• 디스크 검색보다 자료 접근이 훨씬 빠른 것이 가장 큰 장점
• 데이터 양의 빠른 증가로 데이터베이스 응답 속도가 떨어지는 문제를 해결할 수 있는 대안
• Amazon Elasticache 가 대표적인 AWS 인-메모리 데이터 베이스 서비스</p>
<p>**
RDS**
• 관계형 데이터 베이스 서비스 (Relational Database Service)
• Aurora, PostgreSQL, MySQL, MariaDB, Oracle, SQL Server 등의 RDS 엔진을 AWS에서는 제공
• SQL 쿼리를 이용하는 데이터 베이스 용도에 사용
• DB 다운타임 없이 스토리지 용량만큼 자동으로 확장 가능 (Storage Auto Scaling)
• 3가지 데이터베이스 스토리지 유형 제공
✓ 범용 SSD 스토리지: 일반적인 용도
✓ 프로비저닝된 IOPS SSD 스토리지: 빠른 I/O가 필요한 경우 사용
✓ 마그네틱 스토리지: 액세스 빈도가 낮은 경우 사용
<img src="https://velog.velcdn.com/images/chloe_kim/post/8d7bf594-d1c6-4167-a52c-a7e26810f2a1/image.png" alt=""></p>
<p>*<em>RDS 백업
*</em>(• Amazon RDS는 DB 인스턴스 백업 및 복구를 위한 두 가지 방법, 즉 자동 백업 및 데이터베이스 스냅샷(DB스냅샷)을 제공)</p>
<blockquote>
<p><strong>자동백업 (Automated backup)</strong>
✓ 백업을 수행하는 백업 기간을 설정
✓ 백업 보존 기간은 1일 부터 최대 35일까지 설정 가능
✓ DB 인스턴스를 특정 시점으로 복구 가능 (Point in time recovery)
✓ RDS는 DB 트랜잭션 로그를 <strong>5분마다 백업 하므로 가장 오래된 시점 부터 5분전까지 시점으로 복구 가능</strong>
✓ 자동백업을 비활성화 하려면 보존기간을 0으로 설정</p>
</blockquote>
<blockquote>
<p><strong>데이터베이스 스냅샷(DB Snapshots)</strong>
✓ 사용자가 수동으로 스냅샷 생성가능(수동 백업)
✓ 사용자가 지정한 만큼 백업을 보존할 수 있음 (스냅샷 보존기간 없음)
• 특정 시점으로 복구 또는 DB 스냅샷에서 복구 작업을 수행하면 새로운 엔드포인트를 가지는 새 DB 인스턴스가 생성 됨(필요한 경우 기존 DB 인스턴스를 삭제할 수 있음)
• Amazon RDS DB 스냅샷과 자동 백업은 S3에 저장</p>
</blockquote>
<blockquote>
<p><strong>RDS 보안</strong>
• SSL/TLS를 사용하여 애플리케이션과 DB 인스턴스 간의 전송 중 암호화 가능
• AWS Key Management Service(KMS)를 통해 관리하는 키를 사용하여 모든 데이터베이스 엔진에 대한 저장 중 암호화 가능
• 암호화 되지 않은 DB 인스턴스 암호화</p>
</blockquote>
<ol>
<li>RDS 인스턴스 스냅샷 생성</li>
<li>암호화 된 스냅샷 복사본 생성</li>
<li>암호화 된 스냅샷에서 RDS 인스턴스 복원
• 암호/패스워드 이외에 IAM 사용자 및 역할을 통해 데이터베이스 인증 적용 가능
• RDS에 보안그룹을 연결하여 IP주소, EC2 인스턴스에 대한 데이터베이스 연결 제어 가능
• RDS Audit Logs 기능을 사용해 보안 감사에 활용 가능 (로그 데이터 장기 보관을 위해 로그를 CloudWatch Logs에 보낼 수 있음)</li>
</ol>
<blockquote>
<p><strong>RDS - 읽기 전용 복제본 (Read Replica)</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/5c89e39f-3fd6-4bd0-b53a-fdc9821b5337/image.png" alt=""></p>
</blockquote>
<p>• 읽기만 가능한 DB 인스턴스의 복제복을 여러 개 만드는 기능
• 읽기를 별도로 분리하여 성능을 향상
• 원본 DB의 읽기/쓰기 트래픽을 분산시켜 성능 향상
• SQL쿼리를 많이 하는 리포팅 툴의 경우 읽기 복제본으로 연결하여 쿼리 성능 향상
• 읽기 전용 복제본이 작동하려면 백업이 활성화된 상태로 유지되어야 함
• 활성 상태의 장기 실행 트랜잭션이 있으면 완료 후에 읽기 전용 복제본을 생성하는 것을 권장</p>
<blockquote>
<p><strong>RDS – 다중 AZ (Multi-AZ)</strong> :데이터 베이스를 여러 가용영역에 배치 하는 것
<img src="https://velog.velcdn.com/images/chloe_kim/post/3fa62dc4-bd2d-44ba-b0fb-b776377676c6/image.png" alt="">
• 내구성과 가용성을 향상 시킬 수 있음 (RDS 데이터베이스 다운타임이 가장 적게 할 수 있음)
• DB 인스턴스에 대한 업데이트는 가용 영역 전체에서 예비 복제본에 동기식으로 복제
• 한곳의 DB가 장애 발생하면 다른 곳으로 자동연결 하도록 장애 조치 수행 (<strong>재해 복구</strong> 용도로 사용)
• Standby Replica(예비복제본)은 읽기 트래픽 처리 불가 (다중 AZ RDS는 읽기 트래픽 분산 용도가 아님)</p>
</blockquote>
<p>//</p>
<p><strong>RDS – RDS Custom</strong>
• EC2에 RDS를 설치하여 구성하는 경우는 사용자가 서버를 포함한 모든 부분을 관리
• RDS는 AWS에서 데이터베이스와 운영체제(OS)를 모든 부분을 관리하는 완전관리형 서비스
• RDS Custom은 사용자가 데이터베이스와 운영체제에 대한 관리 권한을 가짐
✓ 예) 사용자 지정 DB 및 OS 패키지 설치, 특정 DB 설정 구성, 파일 시스템 구성, 자체 라이센스 관리 등
<img src="https://velog.velcdn.com/images/chloe_kim/post/9ccdc9b2-8bb8-409f-8a93-f2be2b1dd9fa/image.png" alt=""></p>
<p>**
RDS PROXY**
Proxy는 중계하는 기능, 그냥 RDS만 사용하면 애플리케이션과 데이터베이스가 다이렉트로 연결이 됨. 그런데 프록시 서버를 중간에 놓게 되면 애플리케이션과 데이터베이스 사이에 RDS Proxy가 놓이게됨 (중간에 연결하는 기능)
여러개의 애플리케이션이 있을수 있고 이게 여러개의 RDS 프록시에 연결되고, 프록시가 데이터베이스에 연결하면 여러 어플리케이션이 데이터베이스 연결을 공유할 수 있기 때문에 리소스를 효율적으로 사용할 수 있음! </p>
<p>장점1) 장애조치 시간이 감속 
애플리케이션 연결을 유지하면서 예비 DB인스턴스에 자동으로 연결됨ㅁ으로
장점2) 보안 - 중간에 프록시가 있으니까!
장점3) 데이터베이스 성능 유지
매번 새로운 연결을 데이터베이스에 직접 만들 필요가 없기 때문에
이 연결을 만드는데 필요한 데이터베이스의 메모리 및 cpu 등의 사용량을 감소 시킬수 있음, 데이터베이스에 열린 연결 수 제어</p>
<blockquote>
<p>• 데이터베이스 프록시 기능
• 애플리케이션이 데이터베이스와 연결 풀링(pool)하고 공유하도록 하는 기능
• 여러 애플리케이션 연결에서 데이터베이스 연결을 공유할 수 있으므로 데이터베이스 리소스를 효율적으로
사용
• 데이터 베이스 장애 조치 시간 감소
✓ 애플리케이션 연결을 유지하면서 예비 DB 인스턴스에 자동으로 연결
• 보안 개선
✓ 데이터베이스에 AWS IAM 인증을 필요에 따라 적용하고 AWS Secrets Manager에 보안 인증 정보를
안전하게 저장
• 데이터 베이스 성능 유지
✓ 데이터베이스 연결 풀을 설정하고 매번 새 데이터베이스 연결을 여는 데 필요한 메모리 및 CPU 오버헤드 없이 이 풀에서 연결을 다시 사용
✓ 연결 요청이 지정된 한도를 초과하는 경우 애플리케이션 연결을 거부 (<strong>데이터 베이스 열린 연결 수 제어) 하여 부하 감소</strong></p>
</blockquote>
<p>Aurora는 aws에서 개발한 rds엔진임
<img src="https://velog.velcdn.com/images/chloe_kim/post/1fc6651a-e3de-4c4e-aa46-0f8ba4a65eb0/image.png" alt=""></p>
<p>auto scaling 
<img src="https://velog.velcdn.com/images/chloe_kim/post/7832a777-ea87-4584-9bc0-6e8458e41ec0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/c2a792b2-30fc-48b0-ae25-ed965edee9f7/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ff77aac6-866b-49fa-9673-a17599b8d8c7/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/0f98cbd6-aa56-4f87-b180-e5ed6d2588cc/image.png" alt=""></p>
<p>**
Aurora**
<strong>&gt;특징</strong>
• RDS 호환형 관계형 데이터 베이스
• RDS에서 제공하는 읽기 전용 복제본, KMS암호화, 스냅샷 백업, 오토스케일링, RDS Proxy 등을 제공
• AWS에서 만든 서비스로 다른 RDS보다 저렴한 비용에 성능이 더 뛰어남
• 다른 RDS보다 속도는 3-5배 빠름
• 데이터베이스 설정, 패치 적용 및 백업과 같은 관리 태스크를 자동화
• 개별 DB 인스턴스 기반이 아닌 여러 인스턴스를 하나로 운영하는** 클러스터 DB **기반으로 구성 됨</p>
<blockquote>
<p>A<strong>urora DB 클러스터</strong>
• 하나 이상의 DB 인스턴스와 이 DB 인스턴스의 데이터를 관리하는 클러스터 볼륨으로 구성
• DB 인스턴스는 읽기/쓰기 작업을 하는 기본 DB인스턴스와 읽기 작업만 하는 Aurora 복제본으로 구성
• 각 Aurora DB 클러스터는 기본 DB 인스턴스에 더해 최대 15개까지 Aurora 복제본을 구성</p>
</blockquote>
<blockquote>
<p><strong>Aurora 복제본(Replicas)</strong>
• 3개의 가용영역에 6개의 데이터 사본을 자동 복제하여 고 가용성 및 성능 향상 지원
• 마스터 DB와 최대 15개의 Aurora Read Replica 지원
• 읽기 로드를 여러 복제 본에 분산시켜 성능을 향상시킬 수 있음
• 마스터 DB에 장애 발생시 최대 30초 이내에 복제본 중 하나가 기본 인스턴스 역할로 변경 되는 장애조치 (Failover) 가능 - rds는 MZ를 사용하여 standby
• Aurora Auto Scaling을 사용해 워크로드에 따라 Aurora 복제본 수를 자동으로 조정 가능</p>
</blockquote>
<blockquote>
<p><strong>Aurora 글로벌데이터베이스</strong>
• <strong>다른 리전으로 데이터베이스 복제</strong>하는 기능
• 1초 미만의 대기 시간(<strong>RPO 1초</strong>)으로 최대 5개의 보조 리전에 복제
• 보조 리전 중 하나가 1분 이내에 읽기 및 쓰기 기능으로 승격 가능 (<strong>RTO 1분</strong>)
• 재해복구 용도, 사용자가 가까운 리전에서 빠르게 액세스 가능</p>
</blockquote>
<blockquote>
<p><strong>Aurora Database Cloning</strong>
• 현재 Aurora DB 클러스터를 복제하여 원본과 동일 데이터를 갖는 새 Aurora DB 클러스터를 생성하는 기능
• <strong>Snapshot을 만들고 복원하는 것보다 빠르고 비용 효율적</strong>
• Production DB 클러스터에 영향없이 테스트, 개발 등의 용도를 위한 Staging DB 클러스터 생성 가능</p>
</blockquote>
<blockquote>
<p><strong>Aurora Machine Learning</strong>
• Aurora DB에서 Machine Learning 기능 사용
• Amazon SageMaker 또는 Amazon Comprehend 서비스와 통합하여 사용 가능
• 예, 쿼리를 사용해 고객 프로필, 쇼핑기록, 제품 카달로그 데이터를 SageMaker 모델로 전달하여 학습 후 제품 권장 사항 데이터를 가져옴</p>
</blockquote>
<blockquote>
<p><strong>Aurora 멀티 마스터 클러스터</strong>
• 단일 마스터 클러스터
✓ 단일 DB 인스턴스는 모든 쓰기 작업을 수행하며, 기타 모든 DB 인스턴스는 읽기 전용입니다. 라이터 DB 인스턴스가 사용 불가 상태가 되면 장애 조치 메커니즘이 읽기 전용 인스턴스 중 하나를 새 라이터로 승격
• 멀티 마스터 클러스터
✓ 모든 DB 인스턴스는 쓰기 작업을 수행
✓ 라이터 DB 인스턴스가 사용 불가 상태가 될 때 어떤 장애 조치도 없음
✓ 읽기/쓰기 DB 인스턴스가 사용 불가 상태가 될 때 장애 조치 프로세스 및 관련 지연이 발생하지 않음</p>
</blockquote>
<blockquote>
<p><strong>Aurora Serverless</strong>
• DB 인스턴스 운영 및 데이터 베이스 용량을 수동으로 관리 하지 않음
• 특정 DB 인스턴스 유형을 선택하지 않음
• <strong>사용량에 따라 DB 용량을 자동으로 빠르게 용량을 확장하고 축소하는 기능</strong>
• <strong>사용한 만큼만 DB 용량을 초당 요금으로 지불</strong>
• DB 사용빈도가 낮은 애플리케이션에 효과적</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/af3219a3-afa6-4d22-9ef1-8e36bb24a7fe/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/f0a937ce-f03c-4dec-9330-034ec6452c71/image.png" alt=""></p>
<p><strong>ElasticCache</strong>
• 인메모리 데이터 스토어
• 1밀리 초 미만의 빠른 응답시간을 제공
• 빠른 응답이 필요한 애플리케이션에 사용
• <strong>기존의 DB와 연결하여 DB응답성능을 개선하기 위해 사용</strong> (사용하는 DB 데이터를 캐시)
• ElastiCache를 사용하기 위해서는 <strong>애플리케이션의 코드변경</strong>이 필요
• 세션 스토어, 게임 리더보드, 스트리밍 및 분석과 같이 내구성이 필요하지 않는 기본 데이터 스토어로 사용
• 오픈소스 인메모리 데이터베이스 솔루션인 <strong>Redis또는 Memcached</strong> 두가지 유형을 지원
• <strong>Memcached는 멀티쓰레드 지원, Redis는 싱글쓰레드만 지원</strong>
• 일반적으로 Redis가 더 많은 기능을 지원 (스냅샷 백업, 복제기능, 고가용성 제공 등)</p>
<p>*<em>ElastiCache vs. Read Replica
*</em></p>
<blockquote>
<p><strong>RDS Read Replica</strong>
• 데이터베이스: 영구적인 데이터 저장
• 데이터가 계속 변경되는 쿼리(Query)의 읽기 성능 향상에 적합 (데이터가 지속적으로 원본과 동기화 됨)</p>
</blockquote>
<blockquote>
<p><strong>ElastiCache</strong>
• 인-메모리 캐싱: RAM과 같이 빠른 하드웨어에 <strong>일시적으로 저장</strong>
• <strong>지연시간을 줄이는 목적으로 주로 사용</strong>
• 속도는 빠르지만 저장할 수 있는 공간에 제약이 있음
• 변경이 없는 동일한 데이터를 계속 읽는 경우의 성능 향상에 적합 (데이터 변경 시 원본으로 부터 데이터를 로드해야 함)</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/f68dfdda-d72a-4cee-9ad1-7b73d237392f/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/289c5e13-f1fe-4162-a992-0d06aeb2e695/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ebaa5f24-757a-4cbf-be36-5ea73bb90ccd/image.png" alt=""></p>
<p><strong>DynamoDB</strong></p>
<p>• NoSQL 데이터베이스 서비스
• 키-값, 문서 데이터 모델 지원
• 서버리스 서비스
• 용량에 맞게 자동으로 확장 및 축소(Auto Scaling) 하므로 관리 및 운영 오버헤드 최소화
• 10밀리 초 미만의 빠른 응답을 제공
• 초당 수백만개 이상의 요청 처리 가능
• 지연시간이 짧은, 빠른 응답이 필요한 애플리케이션에 사용
• 쇼핑몰 장바구니, 은행 트랜잭션, 게임 플레이어 기록 저장 등에 사용</p>
<blockquote>
<p><strong>백업 및 복구</strong>
• DB 테이블에 대해 온디맨드 백업을 생성하고 특정 시점으로 복구를 활성화
• 특정 시점으로 복구 PITR(Point-in-time recovery)를 사용해 최근 35일 이내 원하는 시점으로 테이블 복원가능</p>
</blockquote>
<blockquote>
<p><strong>DynamoDB 테이블 클래스</strong>
• DynamoDB Standard : 기본형으로 대부분의 워크로드에 권장
• DynamoDB Standard-IA : 애플리케이션 로그, 오래된 소셜 미디어 게시물, 전자 상거래 주문 내역 및 과거 게임 성과와
같이 자주 액세스하지 않는 데이터를 저장하는 테이블에 대한 비용을 줄임</p>
</blockquote>
<blockquote>
<p><strong>읽기/쓰기 용량모드</strong>
• 온디맨드 모드: 초당 읽기/쓰기 처리량을 자동으로 조정, 트래픽 예측이 불가능한 경우 사용
• 프로비전드 모드: 읽기/쓰기 횟수를 수동으로 조정. 트래픽 예측이 가능한 경우 사용</p>
</blockquote>
<blockquote>
<p><strong>DynamoDB Accelerator (DAX)</strong>
• 데이터베이스 앞에 인메모리 캐시를 사용해서 DB의 읽기 성능을 향상시키는 기능
• 마이크로 초 단위의 응답시간을 제공</p>
</blockquote>
<blockquote>
<p><strong>TTL(Time to Live)</strong>
• DynamoDB 유지 시간(TTL)을 사용하여 항목별 타임스탬프를 정의하여 항목이 더 이상 필요하지 않은 시점을 결정
• 지정된 타임스탬프 날짜 및 시간이 지나면 DynamoDB 테이블에서 항목을 삭제
• 예, 애플리케이션에서 1년 동안 사용하지 않은 사용자 또는 센서 데이터를 제거
• 예, 만료된 항목을 Amazon DynamoDB Streams 및 AWS Lambda를 통해 Amazon S3에 보관</p>
</blockquote>
<blockquote>
<p><strong>글로벌테이블</strong>
• 리전간에 <strong>데이터베이스를 복제하는 기능</strong>
• 모든 리전에서 읽기, 쓰기 가능
• 복제본 테이블에 있는 항목의 모든 변경 사항은 동일한 글로벌 테이블 내의 다른 모든 복제본에 1초 이내로 복제됨
• 하나의 리전에 문제가 발생해도 다른 리전으로 라우팅 되므로 재해 복구 기능을 함
• 사용자는 가까운 리전에서 DB를 사용하기에 더욱 빠른 성능 지원</p>
</blockquote>
<blockquote>
<p><strong>DynamoDB Streams</strong>
• DB 테이블에 저장된 항목에 <strong>변경이 발생하는 경우 변경 사항을 캡쳐하는 기능</strong>
• 예, 변경 사항에 대해 Kinesis Data Stream으로 보낼 수 있음
• 예, 변경 사항 이벤트가 발생할 때마다 이벤트를 Lamba로 트리거 하여 Amazon SNS로 전송하여 이메일 등의 이벤트 알림을 생성할 수 있음</p>
</blockquote>
<blockquote>
<p><strong>읽기 일관성</strong>
• DynamoDB에서 데이터를 읽을 때, 사용자는 읽기를 최종적 일관된 읽기나 강력한 일관된 읽기로 지정 가능
<strong>• 최종적 일관된 읽기(기본값) **
✓ 최종 일관성 옵션은 읽기 처리량을 최대화
✓ 최종적 일관된 읽기는 최근 완료한 쓰기 결과를 반영하지</strong> 못할 수 있음**
<strong>• 강력한 일관된 읽기</strong>
✓ 읽기 전에 성공적인 응답을 수신한 모든 쓰기를 반영한 결과를 반환
✓ 최종적 일관된 읽기 보다 읽기 지연시간이 길어지거나 처리 용량을 많이 사용</p>
</blockquote>
<p>**
<strong>DynamoDB – Amazon S3와 통합</strong></p>
<p><strong>Export to Amazon S3 (S3로 내보내기)**</strong>
• DynamoDB 테이블의 데이터를 S3 버킷으로 보내는 기능
• 자동 백업인 특정 시점으로 복구(PITR)기간내의 데이터만 내보낼 수 있음 (최대 35일)
• 기능 사용을 위해서는 특정 시점으로 복구 PITR(Point-in-time recovery)가 활성화 되어야 함
• 데이터를 DynamoDB JSON 형식 또는 Amazon Ion 텍스트 형식으로만 내보낼 수 있음
• S3로 내보낸 데이터를 Athena, AWS Glue, Lake Formation 등의 다른 AWS 서비스를 사용하여 데이터에 대한 분석과 복잡한 쿼리를 수행 가능
• 테이블 내보내기는 테이블의 읽기 용량을 사용하지 않으며 테이블 성능 및 가용성에 영향을 주지 않음
• 테이블 데이터를 다른 AWS 계정이 소유한 S3 버킷 및 해당 테이블이 있는 리전과 다른 리전으로 내보낼 수 있음</p>
<p>**
Import to Amazon S3 (S3에서 가져오기)**
• S3의 데이터를 DynamoDB 테이블로 가져오는 기능
• CSV, DynamoDB JSON 형식 또는 Amazon Ion 텍스트 형식을 가져올 수 있음</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ee75756f-5b94-4cd2-b7eb-d4205a44e916/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/abb23bd2-9761-4a4d-bfd4-cb9d8edb30c1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/da1eac85-4a2c-4637-8921-0cd6433b46d0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/157fec28-f745-4f83-8700-5102feb02554/image.png" alt=""></p>
<p><strong>Other Databases</strong>
Amazon DocumentDB (with MongoDB compatibility) 
• MongoDB를 호환하는 Document Database
• MongoDB는 JSON 데이터를 저장, 쿼리 및 인덱싱하는 데이터베이스 시스템</p>
<p>Amazon Keyspaces (for Apache Cassandra) 
• Apache Cassandra 호환 데이터베이스 서비스
• Apache Cassandra는 오픈소스 NoSQL 분산 데이터베이스
• Wide Column 데이터 베이스 모델 사용</p>
<p>Amazon Neptune 
• 그래프 데이터베이스 서비스
• 노드들의 관계들로 이루어진 데이터 베이스 (예, SNS)</p>
<p>Amazon Quantum Ledger Database(Amazon QLDB) 
• 원장(Ledger) 데이터 베이스
• 데이터에 적용된 모든 변경 사항에 대해 암호로 확인할 수 있는 완전한 기록을 제공</p>
<p>Amazon Timestream
• 시계열(time serise) 데이터베이스 서비스
• 시계열 데이트는 시간에 따라 저장된 데이터 (예, IoT 센서 데이터)</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/ad4d00bd-7634-4831-bd37-54335a8003a9/image.png" alt=""></p>
<p><strong>Database Migration Service (DMS)</strong>
데이터베이스를 마이그레이션 하는 서비스 (DB -DB)
온프레미스에서 aws 또는 aws내에서 마이그레이션 가능
원본 db를 사용하는 중에도 지속적으로 마이그레이션가능
같은 종류의 서로 다른 종류 DB도 마이그레이션 가능
이 기종의 DB는 Schema Conversion Tools(SCT)를 이용하여 데이터 스키마를 마이그레이션 대상 db에 적합하게 변환해야함
같은 종류의 db는 데이터 변환 필요가 없음</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/768c843c-6785-4f3e-8dac-9c9354a4d582/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/27cd7873-0080-4e5e-98c5-bf232f42f256/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[9. 글로벌 전송 (CloudFront,Global Accelerator)]]></title>
            <link>https://velog.io/@chloe_kim/9.-%EA%B8%80%EB%A1%9C%EB%B2%8C-%EC%A0%84%EC%86%A1-CloudFrontGlobal-Accelerator</link>
            <guid>https://velog.io/@chloe_kim/9.-%EA%B8%80%EB%A1%9C%EB%B2%8C-%EC%A0%84%EC%86%A1-CloudFrontGlobal-Accelerator</guid>
            <pubDate>Sun, 22 Oct 2023 12:10:11 GMT</pubDate>
            <description><![CDATA[<p>*<em>CloudFront *</em>
• 콘텐츠 전송 네트워크 서비스 (CDN, Contents Delivery Network)
• 엣지 로케이션의 콘텐츠 캐싱을 이용해 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 서비스
• 전세계에 배포된 200개 이상의 엣지 로케이션을 이용하여 콘텐츠 전송
• 엣지 로케이션은 데이터를 임시 저장할 수 있는 캐싱 기능이 있음</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/6a85b45a-d158-4cfc-905c-e0b57c40c052/image.png" alt=""></p>
<blockquote>
<p>CloudFront 특징
• 사용자에게 가까운 곳의 엣지로케이션에서 데이터를 전송
• 글로벌 배포
• 전세계 사용자에게 최상의 경험을 제공
• 콘텐츠 지연시간을 최소화 하면서 제공
• 비디오 콘텐츠 등의 실시간 스트리밍 배포
• 웹사이트 속도를 높여 해외사용자에게 향상된 브라우징 경험
• EC2 등의 오리진 서버의 부하를 줄일 수 있음
• 오리진에서 CloudFront로 전송되는 비용은 부과 되지 않으므로 비용 절감 효과가 있음
• 사용자의 요청 헤더 값(디바이스, 최종 사용자의 위치, 최종 사용자가 사용하는 언어 및 다양한 조건)에 따라 서로 다른 버전의 콘텐츠를 캐싱하여 제공할 수 있음</p>
</blockquote>
<p><strong>price class</strong>
• 비용 절약을 위해 가격등급에 따라 배포하는 엣지 로케이션 수를 줄일 수 있음
• 3가지 가격등급이 있음
✓ 전체 가격 등급(Price Class All) : 모든 리전에 배포
✓ 가격 등급 200(Price Class 200) : 대부분의 리전에 배포
✓ 가격 등급 100(Price Class 100) : 일부 리전에 배포 하며 가장 낮은 비용</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/e1cbd27e-e81a-4e9c-ad78-285af8a121ec/image.png" alt=""></p>
<p><strong>Origin Group : CloudFront에 대한 고가용성</strong>
• 오리진 장애 조치를 사용하여 CloudFront를 설정
• 기본 오리진과 보조 오리진이 포함된 오리진 그룹을 생성
• 기본 오리진을 사용할 수 없거나 실패를 나타내는 특정 HTTP 응답 상태 코드를 반환하는 경우 CloudFront는
자동으로 보조 오리진으로 전환</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/a4287187-12e1-4e95-aa5e-d8fcbf60c3af/image.png" alt=""></p>
<blockquote>
<p><strong>Lambda@Edge</strong>
:lamda는 컴퓨팅 서비스로 코드를 사용하여 함수를 싱핼 할 수 있는 컴퓨팅 서비스가 Lambda임, 이 컴퓨팅 서비스를 클라우드 프론트에서 Edge 로케이션에서 실행 할 수 있음 그래서 유저가 클라우드 프론트를 통하여 콘텐츠를 전달하게 되면 특정 함 수를 실행할 수 있도록
• CloudFront를 통해 전달되는 콘텐츠를 사용자 지정하는 함수를 실행할 수 있게 해주는 AWS Lambda 가 확장된 컴퓨팅 서비스
• Node.js 또는 Python 함수를 작성한 후 사용자와 가까운 엣지 로케이션에서 해당 함수를 실행
• 다음과 같은 CloudFront 이벤트가 발생할 때 Lambda 함수를 실행
✓ CloudFront가 최종 사용자의 요청을 수신할 때(최종 사용자 요청)
✓ CloudFront가 오리진에 요청을 전달하기 전(오리진 요청)
✓ CloudFront가 오리진의 응답을 수신할 때(오리진 응답)
✓ CloudFront가 최종 사용자에게 응답을 반환하기 전(최종 사용자 응답)</p>
</blockquote>
<p><strong>• Lambda@Edge 사용 예</strong>
✓ A/B 테스트를 위해 사이트의 다양한 버전을 볼 수 있도록 쿠키를 검사하고 URL을 다시 작성
✓ User-Agent 헤더를 확인하여 사용 중인 디바이스를 기반으로 디바이스의 화면 크기에 따라 다른 이미지를 반환
✓ 최종 사용자 요청 또는 오리진 요청 이벤트가 발생할 때 HTTP 응답을 생성
✓ 데이터 전송 비용을 줄이기 위해 사용자에게 전송되는 파일을 압축</p>
<p><strong>CloudFront 실습</strong>
s3버킷을 만들고 파일에 권한주기</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/55509712-3cfe-41ad-a941-f47b8ad28344/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/04ba0af7-c388-4030-ad3c-03bc17780799/image.png" alt=""></p>
<p>URL을 복사해서 붙여넣으면 웹페이지가 나오는데 
<img src="https://velog.velcdn.com/images/chloe_kim/post/1c4eb288-f7ed-4202-b912-9815b366984e/image.png" alt=""></p>
<p>이 버킷을 클라우드 프론트를 만들수 있음 
<img src="https://velog.velcdn.com/images/chloe_kim/post/4381b92e-7ef2-4d51-a766-7b41a82adb5a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/0464248d-76d4-4f0e-9c4c-3924c7a9b498/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/93459f59-124d-40fc-9690-939380ffb514/image.png" alt="">
<img src="https://velog.velcdn.com/images/chloe_kim/post/c7108a41-3698-4611-b451-1fca4ec97e1d/image.png" alt="">
PRICING
<img src="https://velog.velcdn.com/images/chloe_kim/post/b559f6ad-d814-4a02-81f1-09f74df81abd/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/a81fda6b-f2dd-41ea-ae0f-efec1c56bc18/image.png" alt=""></p>
<p>버킷에 불러와서 사용하게 됨 &gt; 각 위치에서 알 수 있게함
<img src="https://velog.velcdn.com/images/chloe_kim/post/1057ec4b-9615-4490-ab47-f82dcce22961/image.png" alt=""></p>
<p><strong>ColudFront 보안</strong>
<strong>Cloud Front 보안 액세스 – 뷰어 / 오리진 프로토콜 정책</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/c5e3e5cc-559f-48a3-86e8-577f6e831bb2/image.png" alt=""></p>
<p>:Match viewer (기존것을 참고하여 앞이랑 맞춤) </p>
<p><strong>Cloud Front 보안 액세스 – OAI (Origin Access Identity)</strong>
 OAI(Origin Access Identity)를 통해 S3버킷의 액세스를 클라우드 프론트를 통해서만 하도록 할 수 있게 하는 기능
<img src="https://velog.velcdn.com/images/chloe_kim/post/3602dcba-9597-4126-8705-807517c38ef0/image.png" alt=""></p>
<blockquote>
<p><strong>Singed URL, Signed Cookies</strong>
서명된 URL또는 쿠키를 이용해서 콘텐츠에 접속하는 기능
URL또는 쿠키에는 콘텐츠만료기간, 액세스가능한 IP주소를 저장할 수 있음
유료 콘텐츠나 보안을 위해 콘텐츠의 유효/만료 기간을 지정해야 하는 경우 사용 (예, 승인된 사용자만 콘텐츠를 볼 수 있도록 허용)
서명된 URL은 1개의 파일에 1개의 서명만 저장 (1개의 파일 접속을 위한 URL)
서명된 쿠키는 하나의 쿠키로 여러 개의 파일 접속 가능</p>
</blockquote>
<blockquote>
<p><strong>지역 제한 (Geographic Restrictions)</strong>
특정 국가에서의 콘텐츠 액세스를 제한 하는 기능
법률적인 사항으로 국가별로 저작권이 다른 경우에 사용가능
2가지 지리적 제한 옵션
➢ 화이트리스트(Whitelist): 리스트에 있는 국가만 액세스 허용하고 나머지는 모두 거부
➢ 블랙리스트(Blacklist): 리스트에 있는 국가만 액세스 거부하고 나머지는 모두 허용</p>
</blockquote>
<blockquote>
<p><strong>AWS Web Application Firewall(WAF)</strong>, AWS Shield와 결합해 DDoS 방어 기능을 함</p>
</blockquote>
<blockquote>
<p><strong>필드 레벨 암호화</strong>
✓ 신용 카드 번호와 같이 사용자가 제출한 데이터를 안전하게 오리진 서버로 업로드할 수 있게 해주는 CloudFront의 기능
✓ PUT/POST 요청이 오리진으로 전달되기 전에 엣지로케이션에서 비대칭 암호화 키를 사용하여 데이터를 추가로 암호화
✓ 데이터는 프라이빗 키를 가진 애플리케이션만 복호화 할 수 있음</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/66e701b2-d185-4dfc-9885-78131de2e37f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/922439cc-4ec2-4b65-864e-7cecdd8bea6a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/6fdad87d-9e0e-44ad-bd46-aa8eab8a6f97/image.png" alt=""></p>
<p>복사한 정책 붙여넣기
<img src="https://velog.velcdn.com/images/chloe_kim/post/b5b4f3d5-0a65-4ed9-961c-b09728888c04/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/919e15b2-81cb-4d8d-9056-1aa405a877be/image.png" alt=""></p>
<p>직접 엑세스 하는경우에는 에러가뜸
<img src="https://velog.velcdn.com/images/chloe_kim/post/8884eb57-23ef-465b-b667-fa960074e881/image.png" alt=""></p>
<p>도메인을 통해서는 접속됨 (OAI 적용)
<img src="https://velog.velcdn.com/images/chloe_kim/post/42884024-fac1-435c-ab4d-af05e2e0a0c1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/b106365d-9305-4ec6-9e57-81885a0ee0ca/image.png" alt=""></p>
<p>지리적 제한도 가능!
<img src="https://velog.velcdn.com/images/chloe_kim/post/d18e4150-6ec9-4d3d-97a6-a44f0c1155a5/image.png" alt=""></p>
<p><strong>Global Accelerator 개요</strong></p>
<p>• 가장 가까운 위치로 트래픽을 라우팅하여 인터넷 대기시간을 줄이고 전송 성능을 향상하는 서비스
• Global Accelerator를 미사용시 서버로부터 지리적으로 먼 사용자는 많은 인터넷 라우팅을 하여 속도가 느림
• Global Accelerator를 사용하면 사용자는 가까운 거리의 엣지로케이션으로 라우팅하고 엣지로케이션과 서버는 AWS전용네트워크 연결로 전송속도가 빠름</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/50ab0310-14bf-48f1-840a-c707c1eeef27/image.png" alt=""></p>
<blockquote>
<p>특징
• 글로벌 액셀러레이터에는 2개의 Anycast 퍼블릭 고정 IP가 생성됨 (IP 주소 연결 방식)
• Anycast는 네트워크 트래픽을 가장 가까운 노드로 전송하는 라우팅 방식
• Elastic IP, EC2인스턴스, ALB, NLB 등의 AWS 엔드포인트를 연결하여 사용 가능
• 애플리케이션의 Health Check기능을 통해 하나의 서버 장애 발생시 다른 서버로 라우팅 가능</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/9b177b67-b606-4c22-9511-47383c6299e3/image.png" alt=""></p>
<p>비교! : 둘다 엣지 로케이션을 사용하는 특징이 있음</p>
<blockquote>
<p><strong>Amazon CloudFront</strong>
변화하는 <strong>동적인 IP 주소 세트</strong>를 사용
• 전 세계에 분포된 엣지 로케이션을 사용 
• 엣지 로케이션을 콘텐츠를 캐시 하는데 사용
• <strong>HTTP 프로토콜</strong>을 처리하는데 적합
• <strong>캐시 가능한 콘텐츠(예: 이미지, 비디오) 와 동적인 콘텐츠(예: API 가속화 및 동적</strong>
사이트 제공)의 성능을 개선</p>
</blockquote>
<blockquote>
<p><strong>Global Accelerator **
• **고정된 IP</strong> 주소를 사용
• 전 세계에 분포된 엣지 로케이션을 사용
• 엣지 로케이션을 가장 가까운 리전의 엔드포인트로 최적화된 경로를 찾는데 사용
• T<strong>CP, UDP 프로토콜을</strong> 처리하는데 적합
• TCP 또는 UDP를 사용하는 광범위한 애플리케이션의 성능을 개선
• <strong>Non-HTTP를 사용하는 게임(UDP), 미디어, VoIP, 모바일 앱, IoT등의 다양한 애플리케이션의 성능을 향상</strong>
• 고정 IP 주소가 필요한 HTTP에 사용</p>
</blockquote>
<p><strong>Global Acceleraotr 실습</strong>
<img src="https://velog.velcdn.com/images/chloe_kim/post/5b91b2d7-d21c-4490-b8e2-2554c912e7a1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/9f304ab2-6f6c-4595-b57c-b90ebbe7d98f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/7d0975fc-ee97-42f2-b8bd-3ecace9b9da8/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/522c3d75-4167-4681-9d7d-7a3bc7e7a993/image.png" alt="">
두개의 리스터 기입</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/78d8d18b-dfe4-4f01-a958-ffb827898def/image.png" alt="">
각 리스너에 엔드포인트 연결</p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/6784257f-521d-46d4-9cda-a9ce3a2cca61/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/chloe_kim/post/a0eb7c25-18c0-41a0-b0b8-c1d04b2cd3b8/image.png" alt="">
인스턴스를 종료하면
<img src="https://velog.velcdn.com/images/chloe_kim/post/4978c80b-6d92-4d08-a701-b6a8f9c5e3d2/image.png" alt=""></p>
<p>자동으로 연결됨 </p>
]]></description>
        </item>
    </channel>
</rss>