[매일] 시작
주류에 속하지 못한 나같은 개발자의 삶은 희망하다 꺽이는 것이 일상이다.
비슷한 목표로 작업을 함께하고 코드에 대해 얘기해보고 싶다.
하는 일에 대한 조언을 주고 받거나 경쟁을 해보고 싶기도 하다.
가장 원하는 것은 팀으로 함께 일한 결과로 성과를 만들어내는 뿌듯함을 느껴보고 싶다.
현재에는 전혀 그렇게 하지 못하고 있다.
SW 개발은 내가 좋아했고 지금도 좋아하는 일이며 생계를 이어가는 도구이다.
초보 수준의 내용이라도 꾸준히 다시 짚는게 필요하다.
자주 쓰지 않으면 금방 잊혀진다.
일일단위의 기록을 작성해 보고자 한다.
'프로그래밍??? > 매일코딩' 카테고리의 다른 글
[20171227] git difftool로 beyond comprare 사용하기 (0) | 2017.12.27 |
---|---|
[20170831] Golang 프로젝트에 TDD 도입하기 (0) | 2017.08.31 |
[20170830] Go에서 테스트 작성하기 (0) | 2017.08.31 |
AWS EC2를 다른 리전으로 이전하기
웹팀의 요청으로 나름 널널한 내가 작업을 진행하기로 했다.
잘 모르지만 하면 또 잘하는 착한 서포터다. 걍 시작해보자.
현재 시점 2017년8월말 기점이다.
이후 작업 방식은 또 바뀔지 모른다.
아래의 방법 말고 다른 방법도 많이 있으리라 생각한다.
목표: 도쿄(AP1)의 인스턴스를 서울(AP2)로 그대로 옮겨서 실행한다
---- 도쿄 리전 작업 ----
1. 인스턴스 메뉴에서 인스턴스 중단
2. 원하는 인스턴스를 선택하고 Image - Create Image를 선택하여 AMI 생성
3. 생성 이미지 및 Snapshots 확인
- IMAGES - AMIs에 이미지 생성 확인
- ELASTIC BLOCK STORE - Snapshots에 스냅샷 생성 확인
4. AMI를 원하는 리전으로 복사
---- 서울 리전 작업 ----
5. AMI와 스냅샷 복사 확인
- 인터넷 자료들에는 스냅샷을 따로 복사하는 것으로 설명한다
- 실제 작업시는 그리 했으나 내용을 살펴보니 AMI 생성시 스냅샷이 함께 생성되고 복사할때도 함께 복사된다
- 만약 볼륨이 두개 이상이면 별도의 스냅샷을 진행하거나 AMI 생성시 추가 볼륨을 선택하면 함께 진행될 것이다
6. 인스턴스 실행
- 실행시에 리뷰를 보면 Storage에 함께 복사한 스냅샷이 들어온 것을 볼 수 있다
- 이를 실행하면 KEY PAIR를 지정해야 한다
- 리전이 다르므로 서울리전(AP2)의 기존 키를 사용하든 생성하여 진행하면 된다
'프로그래밍??? > AWS' 카테고리의 다른 글
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 (0) | 2017.09.28 |
---|---|
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced (0) | 2017.09.27 |
AWS SDK for C++/Go and S3 upload time check (0) | 2017.05.29 |
Amazon S3 REST API (0) | 2017.05.11 |
시작~~~ (0) | 2017.04.21 |
Pro*C에서 Dynamic SQL에서 bind변수 사용하기
'프로그래밍??? > 오라클' 카테고리의 다른 글
ORA-14196 발생 (0) | 2015.10.22 |
---|---|
비트연산과 날짜 설정을 조합하여 사용하기 (0) | 2015.05.18 |
비트 연산 하기 (0) | 2015.05.18 |
날짜에서 요일 찾기 (0) | 2015.05.18 |
Oracle Sequence value are not ordered (0) | 2015.04.03 |
AWS SDK for C++/Go and S3 upload time check
AWS S3에 Object Upload를 테스트 하는 업무가 있다.
이를 위해 RESTful API, C++ SDK, Go SDK를 사용하여 테스트를 진행하였다.
각각의 SDK는 결국 RESTful API를 wrapping해서 사용하는 것이었다.
내부 코드를 보면 s3 manager 혹은 s3 client 객체를 생성하여 진행한다.
Object를 업로드할때 일정 이상의 용량일때는 multipart 업로드가 유리하다.
다음은 multipart upload에 대한 AWS의 공식 문서와 이를 해 잘 설명한 블로그다.
멀티파트 업로드 개요 - AWS
Amazon S3 Parallel MultiPart File Upload - BLOG(java)
개인적으로 잘 사용하는 C++과 Go lang용 SDK는 다음의 링크에서 확인할 수 있다
AWS SDK C++ - download(github)
AWS SDK GO - download(github)
다음의 링크는 C++ SDK의 통합 테스트코드로 상세하고 다양한 코드샘플을 찾을 수 있다.
https://github.com/aws/aws-sdk-cpp/blob/master/aws-cpp-sdk-s3-integration-tests/BucketAndObjectOperationTest.cpp
C++ SDK에는 putobject와 multipart upload가 별도로 구분되어 있다.
위의 테스트 코드에서 PutObjectRequest 를 검색하면 기본 업로드 코드를, CreateMultipartUploadRequest 를 검색하면 multipart upload 코드를 찾을 수 있다.
아래 주소에 가면 cpp, go, .net, java, javascript, php, python, ruby의 예제 코드를 확인할 수 있다.
환경 설정이 잘 되어 있으면 즉각 컴파일과 실행이 가능하다.
GO Lang SDK의 sample 코드는 오픈소스라 더 쉽게 내용을 확인할 수 있다.
패키지 s3manager의 Upload를 확인하면 Upload() 함수가 있다.
이 함수를 사용하면 uploader의 PartSize가 s3manager.MinUploadPartSize인 5Mbytes보다 작으면 에러를 발생시킨다.
이후 PartSize 단위로 읽어들여 하나 이하의 chunk가 발생하면 single part upload를 진행한다.
chunk가 둘 이상이면 mulpartuploader 객체를 통해 업로드를 진행한다.
위의 SDK를 실행하려면 기본 환경설정을 해야 한다.
AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 를 설정해야한다.
AWS_SESSION_TOKEN 의 경우 옵션이다.
SDK Configuration - GO Lang
CPP SDK의 경우 CMake를 활용하며 c++ version이 최소 C++11를 지원해야 한다.
SDK 설치시 C++11 혹은 C++14를 지정할 수 있다.
이와 함께 CMake를 사용한다.
사용하는 linux의 기존 CMake는 버전이 낮아 호환되지 않았다.
yum을 통해 cmake3를 설치하여 사용하였다.
Configuring the SDK - CPP
위의 링크들의 문서와 예제 코드를 사용하면 SDK를 활용하여 AWS를 사용하는 것이 크게 어렵지 않을 것이다.
위의 과정들을 통해 파일 업로드 속도를 간단히 체크한 결과이다.
테스트는 IDC의 linux 서버에서 진행하였으며 multipart upload의 경우 사무실의 개발PC에서 실행하여 체크한 시간이다.
S3 File upload time check - linux server, AWS CLI | |||
시작(ms) | 종료(ms) | 시간차(ms) | |
1회 | 1494548006096 | 1494548043927 | 37831 |
2회 | 1494548050272 | 1494548072718 | 22446 |
3회 | 1494548094591 | 1494548148717 | 54126 |
4회 | 1494548161326 | 1494548217320 | 55994 |
5회 | 1494548227645 | 1494548275162 | 47517 |
6회 | 1494548306828 | 1494548329881 | 23053 |
7회 | 1494548352251 | 1494548364362 | 12111 |
8회 | 1494548382826 | 1494548395007 | 12181 |
9회 | 1494548401111 | 1494548453868 | 52757 |
10회 | 1494548459801 | 1494548475682 | 15881 |
합산 | 333897 | ||
평균 | 33389.7 |
S3 File upload time check - linux server, c++ sdk, putobject(single), file size:25826362 | ||
소요시간(seconds) - 1회 | 소요시간(seconds) - 2회 | |
1회 | 8.70795 | 18.9716 |
2회 | 21.2515 | 12.0308 |
3회 | 34.9919 | 13.7737 |
4회 | 29.1713 | 6.39977 |
5회 | 9.98919 | 7.33901 |
6회 | 15.6894 | 16.913 |
7회 | 29.9045 | 20.028 |
8회 | 53.3282 | 25.8403 |
9회 | 32.0113 | 42.0073 |
10회 | 10.8376 | 33.4675 |
합산 | 245.883 | 196.771 |
평균 | 24.5883 | 19.6771 |
S3 File upload time check - linux server, go sdk, Upload(auto multiparts), file size:26189716 | ||
소요시간(seconds) - 1회 | 소요시간(seconds) - 2회 | |
1회 | 4.6583578 | 4.6088254 |
2회 | 3.9769095 | 4.1344735 |
3회 | 4.0830212 | 4.2095661 |
4회 | 4.7418807 | 4.1589274 |
5회 | 4.1057907 | 4.6452324 |
6회 | 4.2522046 | 4.0686392 |
7회 | 4.5779243 | 4.0981387 |
8회 | 4.6437622 | 5.8632637 |
9회 | 4.2051021 | 6.0630964 |
10회 | 4.1674061 | 6.753556 |
합산 | 43.412359 | 48.60372 |
평균 | 4.3412359 | 4.860372 |
'프로그래밍??? > AWS' 카테고리의 다른 글
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 (0) | 2017.09.28 |
---|---|
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced (0) | 2017.09.27 |
AWS EC2를 다른 리전으로 이전하기 (0) | 2017.08.29 |
Amazon S3 REST API (0) | 2017.05.11 |
시작~~~ (0) | 2017.04.21 |