인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Amazon Cloud/EFS

[AWS] 📚 S3 / EBS / EFS 스토리지 서비스 비교

S3 vs EBS vs EFS 스토리지 비교 EBS, EFS, S3 모두 데이터를 저장하는 파일 저장 공간 서비스임에는 같다. 하지만 각각 서비스 특징과 성능에 따라 사용 용도를 분별할 필요가 있다. 데이터 시점에서 보면 EBS는 볼륨 기반이며, S3는 객체 기반, 그리고 EFS는 파일 기반 저장 서비스이다. 이 세가지 파일 저장 스토리지의 특징을 살펴보는 시간을 간단히 가져보자. EFS (Elastic File Storgae) AWS 클라우드 서비스와 온프레미스 리소스에서 사용할 수 있는 간단하고 확장 가능하며 탄력적인 완전 관리형 탄력적 NFS 파일 시스템 NFSv4(Network File System) 프로토콜 사용 VPC 내 EC2 인스턴스는 직접 액세스 할 수 있음 On-premise 서버는 D..

category_image
인파_
2022.11.03
(0)
Amazon Cloud/S3

[AWS] 📚 S3 - CLI 명령어 종류 💯 총정리

AWS S3 CLI 명령어 지금까지 S3에 버킷을 생성하고 파일을 저장하려면 웹브라우저 콘솔 화면에 가서 일일히 화면을 눌러 적용해야 했다. 기능상에는 문제는 없지만 웹서비스 자체가 조금 느리다는 점이 사용에 불편함을 느끼게 된다. 거기다 브라우저 한 페이지에 표시되는 파일 갯수 역시 한계가 있다. 하지만 AWS CLI를 이용하면 간편하게 S3 버킷을 제어하고 S3 오브젝트에 접근할 수 있어 활용성이 높아진다. 예를들어 10만 단위의 파일을 한 번에 이동하거나 삭제하고 싶을 때 커맨드를 이용해 패턴을 이용해 빠르게 처리를 할수 있다. AWS CLI 란? AWS Command Line Interface(AWS CLI)는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구. 최..

category_image
인파_
2022.10.01
(0)
Amazon Cloud/Lambda

[AWS] 📚 람다 /tmp 임시 스토리지 사용 방법

람다 /tmp 임시 파일 추출, 변환, 로드 작업과 PDF 파일 생성 또는 미디어 처리와 같은 데이터 집약적인 애플리케이션일 경우, 대용량 데이터를 잠시 어딘가에 저장해야 할 필요가 생긴다. 단순하게 람다 자체 내에서 변수로 저장하게 되면 안그래도 적은 람다 메모리를 코드 실행이 아닌 데이터 저장에 성능을 뺏겨버릴수가 있다. 그래서 Lambda 에서는 /tmp 임시 공간을 무료로 제공해준다. /tmp 영역은 말 그대로 람다에서 파일을 저장할 수 있는 로컬 스토리지 영역이다. 람다에서 이곳에 파일을 저장하고 저장된 파일을 꺼내 쓸 수 있다. /tmp 영역은 람다의 실행 환경의 수명 동안 보존되며, 호출 사이의 데이터에 대한 임시 캐시를 제공한다. 따라서 람다 컨테이너가 종료 되고 새 실행 환경이 생성될 때..

category_image
인파_
2022.08.25
(0)
Amazon Cloud/Lambda

[AWS] 📚 람다 - 이미지 리사이징 서비스 (S3 / API Gateway) 구현하기

이미지 리사이징 작업 같은 경우 CPU와 메모리를 많이 사용하기 때문에 로컬 서버에서 작업을 돌려버리면 다른 사용자의 요청을 못받는 현상이 생길수 있다. 특히나 싱글 스레드 기반으로 돌아가는 노드 서버일 겨우 성능 감소의 큰 원인이 된다. 노드는 비동기 프로그래밍 기반으로 I/O작업에 유리하고 CPU 작업에 불리하기 때문이다. 그렇다고 따로 이미지 리사이징 전용 로컬 서버를 만들어 올린다 해도, 모든 사용자가 항상 이미지 리사이징 작업 기능을 이용하는 것도 아니기에 서버를 계속 돌린다는 것은 자원 낭비일수 있다. 바로 이러한 상황에서 서버리스의 서비스는 힘을 발휘한다. 람다는 특정한 동작을 수행하는 로직을 저장하고 요청이 들어올 때 로직을 실행하는 서비스다. 마치 함수처럼 호출할 때 실행하여 FaaS라고..

category_image
인파_
2022.08.19
(0)
Amazon Cloud/Lambda

[AWS] 📚 람다 Provisioned Concurrency(프로비저닝된 동시성) 설정 방법

AWS Lambda 즉, 서버리스 에는 Cold Start 라는 개념이 존재한다. 사용자로부터 요청을 받으면 함수를 실행할 수 있는 런타임 환경을 준비한 뒤 함수를 실행하게 되는데, 이러한 런타임 환경 준비 기간동안 코드 실행 지연이 불가피하게 생기게 되며, 또한 함수를 지속적으로 사용하지 않아 런타임이 꺼지거나 함수를 새롭게 업데이트 했다면, Lambda 는 또 새로운 런타임 환경을 준비하는 시간을 갖게 되어 결국 서비스 이용에 지연이 생기게 된다. 따라서 이러한 고질적인 문제를 해결하기 위해 생성된 기능이 Provisioned Concurrency(미리 준비된 동시성) 이며, Provisioned Concurrency 는 Lambda 함수를 지속적으로 초기화하며 런타임 환경을 준비함으로써, 사용자의 ..

category_image
인파_
2022.08.18
(0)
Amazon Cloud/Lambda

[AWS] 📚 람다 성능 개선 (Cold Start 해결) 전략 4가지

알다시피, 람다함수가 들어있는 서버리스의 항상 활성화 되어 있지 않다. 그래서 사용자의 요청이 들어왔을때 람다함수를 실행하기 위한 부수적인 준비 세팅이 필요하고 이로인해 대략 수초~수십초 정도 코드 딜레이가 발생되게 된다. 바로 이 상태를 Cold Start 라고 불리우며, 이 때문에 람다의 최대 단점인 상대적으로 느린 response를 제공받게 되는 것이다. 그럼 이 콜드 스타트를 최소화하고 어떤 방식으로 함수 로직을 구현해야 빠르고 최적화된 코드실행을 할수 있을까? 지금 부터 람다 성능을 높이는 전략에 대해 알아보자. Lambda 메모리 늘리기 Lambda의 사양을 올리는 가장 확실하면서 간단한 방법은 해당 Lambda에 적용되는 메모리의 양을 늘리는 것이다. 메모리를 올리면 인스턴스의 사양이 올라가..

category_image
인파_
2022.08.17
(0)
Amazon Cloud/Lambda

[AWS] 📚 람다 - 함수 버전(version) & 별칭(alias) 기능

서버리스라고 해서 간편하게 함수에 코딩만 하고 트리거로 AWS 서비스와 연동한뒤 배포만 하면 될 줄 알았더니, 람다 함수 버전이라던가 별칭이라는 생소한 요소에 당황하였을 테지만, 람다의 버저닝과 별칭은 전혀 새로운 개념이 아니다. 람다는 EC2 같이 컴퓨팅이 아니라 코드 베이스 단이다. 즉, 언제어디서 소스 코드(함수)를 업데이트 할 수 있으며, 업데이트된 함수 서비스를 소비자에게 제공하게 된다. 그러다 업데이트된 함수 코드에 문제가 생기면 롤백을 하던지, 버그 수정을 하고 다시 새로 배포하던지..등, 람다 함수를 보다 체계적인 관리를 해야하는 형상 관리가 필요해지게 된다. 형상 관리라고 하니 개발자이신 독자분의 머릿속엔 한가지 단어가 떠올랐을 것이다. 그렇다 GIT 이다. 람다의 버저닝은 GIT의 버저..

category_image
인파_
2022.08.16
(0)
Amazon Cloud/EC2

[AWS] 📚 EC2 linux 한국 날짜 시간으로 변경하기

EC2 Timezone KST 변경하기 Amazon Linux Ec2를 그대로 사용할 경우, 서버 날짜가 UTC로 기본 설정되어 있어서 한국 서버를 운용할 경우 서버 날짜를 Asia/Seoul로 맞춰줄 필요가 있다. $ date 우선 아래 명령어를 차례로 입력해준다. $ sudo rm /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 그리고 /etc/sysconfig/clock 파일을 열어 ZONE 값을 UTC에서 Asia/Seoul 으로 변경해준다. $ sudo vim /etc/sysconfig/clock 마지막으로 인스턴스 재부팅을 하고 날짜를 조회해보면 정상적으로 KST 시간이 적용된걸 볼수 있다. $ sudo reb..

category_image
인파_
2022.08.13
(0)
Amazon Cloud/Athena

[AWS] 📚 Athena로 ELB(ALB) 로그 간편하게 분석하기

Athena로 ALB Access Log 추출하기 지난 시간에 ALB (Application Load Balancer: 애플리케이션 로드 밸런서) 의 access log를 활성화 하고, s3에 저장토록 설정했었다. 하지만 로그 파일들을 이용하는데 있어 매우 불편한점이 한두가지가 아니었는데, 첫번째는 ALB 로그는 모든 요청 로그를 남기기 때문에 로그를 수백/수천개의 압축파일로 생성해서 버킷에 몽땅 저장한다는 점이다. 서비스의 트래픽이 얼마나 많으냐에 따라 다르겠지만, 대량의 트래픽이 발생하는 경우 1시간에도 수백/수천개의 gz 파일이 생성되기도 한다. 두번째는 로그 파일 내용물이 가독성이 매우 안좋다는 점이다. 로그를 뒤져서 이상한 트래픽을 걸러내야 하는데, 이렇게 사람이 읽기 어려운 형태로 문자들이 나..

category_image
인파_
2022.08.12
(0)
Amazon Cloud/Athena

[AWS] 📚 Athena - Partition Projection 파티셔닝 자동화 하기

파티션 프로젝션 (Partition Projection) Athena partitioned table 관련 공식 문서에선 MSCK REPAIR TABLE query로 partition을 인식하는 방법을 소개하는데, 이는 처음에만 자동으로 맵핑해주지, 그 이후에 추가된 로그 파일이나 폴더에 대해서는 따로 alter 작업을 해야 파티션 데이터가 업데이트가 된다. 따라서 추후에 추가된 로그 파일 경로를 자동으로 인식하게 하기 위해서는 따로 쉘 스크립트로 처리하거나 람다를 이용해야 되는데, 최근에 추가된 파티션 프로젝션 기능을 사용하면 이러한 과정을 완전 자동화 할수가 있다. 프로젝션 파티션은 간단히 말해, S3의 Key에 Placeholder를 사전에 구성해 테이블의 파티션을 생성하는 기능이다. 쿼리를 사용할..

category_image
인파_
2022.08.11
(0)
Amazon Cloud/Athena

[AWS] 📚 Athena 최적화 하기 (데이터 압축 / 데이터 파티셔닝)

Athena 성능 향상 전략 Athena(아테나)는 서버리스 서비스로서, 실행한 쿼리에 대한 비용을 지불하면 된다. 요금은 실행한 쿼리가 스캔한 데이터의 용량만큼 비용이 청구된다. 하지만 실행한 쿼리의 데이터 용량이 어마무시하면 아무리 온디멘드 형식일 지라도 요금이 많이 들게 된다. 따라서 적절히 데이터 압축과 파티셔닝을 하여, 스캔하는 데이터의 양을 제한해 비용을 절감할 수 있는 전략으로 나아가야 한다. 데이터 파티셔닝 용량이 큰 테이블이나 인덱스를 관리하기 쉬운 파티션(partition)이라는 작은 단위로 분할하는 것 아테나를 사용하기 위한 테이블 생성(CREATE)이나 파티셔닝을 위한 테이블 수정(ALTER)과 같은 DDL문과 실패한 쿼리문에 대한 비용은 청구되지 않는다. 데이터 압축 Athena의..

category_image
인파_
2022.08.10
(0)
Amazon Cloud/Athena

[AWS] 📚 Glue Crawler로 테이블 만들고 Athena로 조회하기

Glue Crawler로 S3 스키마 생성 지난 포스팅에서는 csv파일을 S3에 업로드하고 Athena에서 직접 테이블 쿼리문을 실행하여 수동으로 만들어 조회하는 시간을 가져보았다. 이번에는 AWS Glue 서비스가 제공하는 Glue Crawler를 사용해 S3의 데이터를 스캔하고 자동으로 데이터베이스와 테이블을 만들어주는 서비스를 이용해 Athena로 조회해보는 시간을 가져볼 것이다. Glue 크롤러로 파일을 데이터베이스로 변환하기 위해선 당연히 대상으로 하고 메타 테이블을 생성할 데이터 소스가 필요하다. RDS, S3, DynamoDB 등 AWS의 데이터 저장소 뿐만 아니라 JDBC를 지원하는 DB, file 등등 거의 모든 형태의 데이터 저장소에 있는 파일을 이용해 크롤러가 가능하다. 이번 강의에서..

category_image
인파_
2022.08.09
(0)