728x90

전체 글 105

AWS - CloudFront

CloudFront 정적, 동적, 실시간 웹사이트 컨텐츠를 유저들에게 전달하는데 사용됨 특정 유저가 요청했을때 Edge Location을 통해 사용 웹사이트에 컨텐츠가 딜리버리 된다. 컨텐츠 딜리버리 네트워크 Content Delivery Network(CDN) 특정 홈페이지에서 html, js등 내용물을 가져오는 속도를 CDN을 통해 비약적으로 상승 할 수 있다. 분산 네트워크(Distributed Network) 한국에서 웹사이트를 운영중일때라고 가정한다면,, 세계 각국에서 요청이 왔을때 그들에게 보여줘야할때 Latency가 발생할 것이다. 웹사이트 호스팅 Region 에서 멀어질 수록 컨텐츠가 딜리버리되는 시간이 달라진다. CDN은 모든 컨테츠를 직접 전달하는게 아니라 녹색 큐브인 edge loca..

AWS - Lambda

Serverless의 주축을 담당 Serverless : server + less → 서버가 없다. 클라우드가 직접 서버를 돌려주고, 생성하며 리소스들을 서버의 사용량에 따라 직접 할당해줌 따라서, 문제점도 덜 발생한다. 또한 사람의 간섭이 거의 없는 편이다. Events를 통하여 Lambda를 실행시킴 Event ex) 업로드 된다. 삭제 되었다 등 NodeJS, Python, Java, Go등 다양한 언어 지원 직접 코드를 자서 이벤트가 감지되었을때 우리가 작성한 코드가 실행이 된다. Lambda → 다른 서비스 호출 Lambda Function 람다에서 짠 코드를 람다 함수라고 한다. 비용 Lambda Function이 실행될때만 비용 지불 매달 1,000,000번 함수 호출 시 무료 (그 후로는 ..

AWS - CloudWatch Alarm

Alarm 임의로 정해놓은 값에 도달할 시 Alarm을 울림 Alarm이 울릴 시 특정 이벤트들을 작동시킬 수 있음 Alarm State Alarm - 알람이 울렸다 Insufficient - 알람을 만들었지만 등록한 주체가 없을 때 ex) 알람을 EC2인스턴스에서 돌게 만들었지만, EC2 인스턴스가 없을때 Insuffient 상태로 분류가 된다 OK - 알람이 울리지 않고 원하는 범위 내에서 리소스들이 잘 돌아간다. Billing Alarm 우리들이 정해놓은 지출 임계값을 초과할 경우 SNS를 통하여 경고를 함 현재 N.Virginia(us-east-1)지역에서만 이 기능이 지원됨

AWS - CloudWatch

CloudWatch AWS 리소스 사용의 실시간 모니터링 기능 지원 다양한 이벤트들을 수집하여 로그파일로 저장 이벤트 & 알람 설정을 통해 SNS, AWS Lambda로 전송 가능 [CloudWatch 사용 가능 서비스들] : EC2, RDS, S3, ELB등 ex) 1. S3버켓에 파일을 업로드하고 삭제할 때 S3버켓 접근 시 접근 거부 발생 RDS 데이터베이스에 접속 시도할 때 → 이 모든게 이벤트로 발생할때, 로그파일로 저장하거나, 알람을 해준다. CloudWatch 모니터링 종류 Basic Monitoring 무료 5분 간격으로 최소의 Metrics 제공 Detailed Monitoring 유료 1분 간격으로 자세한 Metrics 제공 Metrics ex ) CPU 사용량 네트워크 I/O 등 Cl..

AWS - S3 encryption(암호화)

파일 업로드/다운로드시 SSL / TLS 가만히 있을시 SEE-S3 → 마스터 키가 있어 일정 시간마다 키 값을 변경 (AES-256 으로 구성) SSE-KMS → AWS에서 일괄적으로 관리하지만 언제, 누가, 어떻게 암호를 풀었는지 기록이 복원 가능 SSE-C → 암호키를 직접 다룰 수 있으며, 사용자가 키 값을 변경 시켜줘야함 S3 암호화 과정 일반적으로 파일 업로드 요청시 PUT 요청이 생성됨 PUT 요청이 일어났고, 호스트는 버켓 이름 및 메타데이터들이 보인다. 업로드시 암호화가 이루어 진다면, x-amz-server-side-encryption-parameter 가 헤더에 딸려나온다. 파일을 S3에 업로드할 시 PUT요청에 해당 문구가 헤더에 있다면, S3는 사용자가 암호화 요청을 건 것으로 간..

AWS - S3

S3 (Simple Storage Service) AWS에서 처음으로 런칭한 서비스 특징 안전하고 가변적인 Object 저장공간을 제공 (ex: Google Cloud) AWS 에서 모든 파일에 일종의 안전장치를 걸어놔서 외부에서 접근 불가하게 만들어줌 가변적이란 것은 따로 저장공간의 크기를 만들지 않아도 알아서 커졌다 작아졌다함 이미지, 동영상, 파일 같은 것들만 올림 / 운영체제 X 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있음 파일 크기는 0KB ~ 5TB 까지 지원 저장공간 무제한 실제 HDD와는 달리 방대한 양의 데이터를 보관할 수도 있음 Bucket이라는 이름을 사용함 (디렉토리와 유사함) 폴더를 만들고 폴더 이름을 부여해주는 것과 같이 이름 변경 가능 Buck..

AWS - ElastiCache

ElastiCache 클라우드 내에서 In-Memory 캐시를 만들어줌 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴 Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과 누림 SNS, 트위치, 네이버 실시간 검색어 등 많은 사람들에 의해서 읽혀지는 데이터를 캐시에 저장 데이터의 양이 방대하다면 많은 이득을 볼 수 있다. 초반 애플리케이션 및 테스트 용도로는 적합하지 않다. Read-Heavy 에서 최고의 효율을 자랑할 수 있다 = ElastiCache → Memcashed → Redis Memcached Object 캐시 시스템으로 잘 알려져 있음, 훌륭한 퍼포먼스 ElastiCache 는 Memcached의 프로토콜을 Redis와는 달리 디폴트로 따..

카테고리 없음 2022.02.07

AWS - RDS (Multi-AZ, Read Replicas)

Multi AZ (Multi Availability Zones) 원래 존재하는 RDS DB에 무언가 변화(ex: write)가 생길 때 다른 AZ에 똑같은 복제본이 만들어짐 = Synchronize AWS에 의해서 자동으로 관리가 이루어짐(No admin intervention) 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨 Disaster Recovery Only ! 성능 개선을 위해서 사용되지는 않음, 따라서 성능 개선을 기대하기 위해선 Read Replica가 사용되어져야 함 Read Replica Production DB의 읽기 전용 복제본이 생성됨 주로 Read-Heavy DB 작업시 효율성의 극대화를 위해 사용됨(Scailng) Disaster Recovery 가 주..

AWS - RDS(DB backup)

DB Back-up Automated Backups (자동 백업) DB Snapshots (데이터베이스 스냅샷) Automated Backups (AB) - 자동백업 Retention Period(1-35일) 안의 어떤 시간으로 돌아가게 할 수 있음 AB는 그날 생성된 스냅샷과 Transaction logs(TL)을 참고함 현재 시간 : 2021년 12월 2일 , 복구 희망 시간 : 2021년 11월 1일 디폴트로 AB기능이 설정되어있으며, 백업 정보는 S3버켓에 저장 (특정 조건에 도달시 S3는 더이상 무료가 아니다) 무한대로 저장해도 공짜가 아님, RDS인스턴스의 해당되는 크기 만큼만 무료로 사용가능 AB동안 약간의 I/O suspension이 존재할 수 있음 → Latency 인스턴스 삭제시 스냅샷..

Airflow에서 겪은 장애 이슈

Airflow 에서 해당 스케쥴을 바탕으로 실행이 되도록 설계를 해놨다. 하지만 2021년 12월 말에 큰 문제가 발생했다. 위 사진이 정상 실행일때 캘린더 뷰 이고, 아래 사진은 정상적인 실행이 되지 않았을 때의 캘린더 뷰이다. 이슈사항 : 한가지의 DAG 만 스케쥴에 맞춰 실행되는 것이 아닌 모든 DAG의 실행이 되고있지 않는다. 문제 인지 Airflow에서 default queue의 개수를 소지하고있었다. 16개로 알고있다. 어떤 한 쪽에서 API를 호출하는 코드였는데, API가 호출하는데 시간이 많이 지연되고있었다. API call 이 1분단위로 이루어지면서 호출하는데 로딩시간으로 1분이 넘어가 계속 queue가 쌓이게되었다. 해당 DAG가 모든 queue를 소지하고 있어서 다른 dag에는 할당이..

Airflow dag 인자 받기와 병렬처리법

Airflow 에서 실행하는 task에 인자를 받는 함수가 있을 경우에 해당 방법을 사용하면 된다. def call_api(category, **kwargs): import json import req import requests url = f'http://test/{category}' category 값을 넘겨받아 사용하고싶은 경우 call_api_task1 = PythonOperator( task_id = 'call_api_task1', python_callable = call_api, op_kwargs = {'category': '카테고리 값'}, dag = dag ) 병렬 처리로 수행을 하고 싶은 경우 하단 처리 pipeline에서 [] 로 묶어서 실행하면 병렬처리가 가능하다. start_task..

Airflow정의와 설치 과정

에어플로우는 워크플로우 관리 플랫폼이며, 2014년에, 숙박 공유 서비스인 Airbnb에서 회사가 성장하면서, 점점 복잡해지는 워크플로우를 관리하기 위해서 개발되었다. 그 후에 지금까지 발전되어 많은 회사에서 사용되고 있고, 지금은 Apache 재단에서 최상위 프로젝트로 관리되고있다. 1. 워크플로우 순서가 있는 과정을 의미한다. ex ) 로그를 활용하기 위해 로그의 전처리, 가공 및 분석을 진행하고 처리한 결과를 확인하는 그 모든 과정들을 워크플로우라고 한다. 사용성 측면에서 루이지는 복잡한 API를 가지고 있어서 잘 알고 있으면 에어플로우보다 좀 더 유연하게 사용할 수 있지만 cron을 사용하기 때문에 때문에 확장성이 낮음. 반면, 에어플로우는 사이즈에 따라 로컬에서도 실행할 수 있지만 Kuberne..

AWS - RDS

Relation DB Service (관계형 데이터베이스) 데이터베이스 테이블 데이터 필드 AWS RDS에서 사용 가능한 DB 종류 MS-SQL, Oracle, MySQL, Postgre, Aurora, Maria DB Aurora - AWS 자체에서 운영중이고 프리티어에서 제공하지 않음 Data Warehousing Business Intelligence 리포트 작성, 데이터분석시 사용(Production Database → Data Warehousing) 매우 방대한 분량의 데이터 로드시 사용 → 빅데이터 분석에 사용이 많이된다. 보통 서로 다른 데이터들이 합쳐지며, 유사시 우리가 필요한 데이터를 불러온다. OLAP vs OLTP (차이점 숙지) OLTP : insert와 같이 종종 사용되어지는, 혹..

Kubernetes, AKS 기본

컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼 서버리스, CI/CD, 머신러닝 등 다양한 기능이 쿠버 플랫폼 위에서 동작 Deployment, StatefulSets, DaemonSet, Job, CronJob등 다양한 배포방식 지원 Deployment : 새로운 버전의 애플리케이션을 다양한 전략으로 무중단 배포 가능 StatefulSets : 실행순서를 보장하고 호스트 이름과 볼륨을 징정하게 사용할 수 있어 순서나 데이터가 중요한 경우에 사용 가능 DaemonSet : log, monitoring등 모든 노드에 설치가 필요한 경우에 사용 Job, CronJob : 배치성 작업이 필요할 때 사용 Azure Kubernetes Service에 컨테이너화된 애플리케이션 배포 AKS..

카테고리 없음 2022.02.04

Minikube CLI

# minikube 상태확인 $minikube status # minikube 실행 $minikube start # 특정 k8s 버전 실행 $minikube start --kubernetes-version=v1.20.0 # 특정 driver 실행 $minikube start --driver=virtualbox --kubernetes-version=v1.20.0 # minikube ip 확인 (접속테스트시 필요) $minikube ip # minikube 종료 $minikube stop # minikube 제거 $minikube delete # run image $kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Nev..

Kubernetes 대화형 튜토리얼

컨테이너화된 애플리케이션을 클러스터에 배포하기. 디플로이먼트를 스케일링하기. 컨테이너화된 애플리케이션을 새로운 소프트웨어 버전으로 업데이트하기. 컨테이너화된 애플리케이션을 디버그하기. → 쿠버네티스는 컴퓨터들을 연결하여 단일 형상으로 동작하도록 컴퓨팅 클러스터를 구성하고 높은 가용성을 제공하도록 조율한다. → 쿠버네티스는 컴퓨터 클러스터에 애플리케이션 컨테이너의 배치(스케줄링) 및 실행을 오케스트레이션하는 운영 수준의 오픈소스 플랫폼이다. → 쿠버네티스는 이러한 애플리케이션 컨테이너를 클러스터에 분산시키고 스케줄링하는 일을 더욱 효율적으로 자동화한다. 마스터는 클러스터를 조율한다. 마스터는 실행 중인 애플리케이션을 호스팅하기 위해 사용되는 노드와 클러스터를 관리한다. 노드는 애플리케이션을 구동하는 작업자..

Docker, Kube 등 명령어 조금..

MiniKube Init choco install minikube minikube start kubectl get po -A minikube dashboard kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 Docker FROM ubuntu:16.04 #운영체제 정의 COPY helloworld /usr/local/bin #helloworld 파일을 도커 컨테이너 내부 경로에 저장 RUN chmod +x /usr/local/helloworld #COPY에서 저장한 파일에 대한 실행 권한 부여 CMD ["helloworld"] # 완성된 이미지를 도커컨테이너로 실행전 먼저 실행할 명령 정의 $ docker image bu..

AWS - EC2 instance 생성

VPC - 가상의 클라우드 컴퓨팅 다른사람이 접근 하기 위해서는 port 80번을 열어주어야한다. 소스의 위치는 위치무관을 선택할 시에는 어떤 곳에서도 접근이 가능하기에 보안성이 많이 떨어져 prod환경에서는 권장하지 않음 EC2 instance 생성 완료 후에 ssh로 접근하기 key pair를 저장하고, keypair가 있는 위치에서 terminal을 실행시킨다. 1. 접근 후에는 yum update -y 를 이용하여 운영체제 업데이트 및 패키지들을 설치 및 업데이트 해준다. 2. apache를 설치해줘서 웹서버 처럼 사용할 수 있게 해준다. 3. yum install httpd -y 4. service httpd start 5. chkconfig httpd on

AWS - ELB

ELB(Elastic Load Balancers) 수많은 서버의 흐름을 균형있게 흘려보내는데 중추적인 역할 하나의 서버로 traffic이 몰리는 병목현상 (bottleneck) 방지 Traffic의 흐름을 Unhealthy instance → healthy instance로 EC2인스턴스가 건강하지 못하지만 이걸 건강한 인스턴스로 보내주기 위한 작업을 수행함 application load balancer : osi layer7에서 작동됨 → http, https 와 같은 traffic의 load balancing에 가장 적합함 → 고급 request 라우팅 설정을 통하여 특정 서버로 request를 보낼 수 있음 network load balancer : osi layer4에서 작동됨, 매우 빠른 속도를..

728x90
반응형