[AWS] 예약인스턴스 할인 공유 및 Credit 할인 공유 비활성화 설정하기

이미지
지난 포스팅을 통해 AWS 통합계정 설정을 통한 계정관리 및 비용할인에 대해 알아보았습니다. 통합결제계정을 사용하는 경우 통합할인에 매우 유용하지만 Credit 을 사용하거나 예약인스턴스(RI) 를 사용하고 있는 경우에 계정별 사용비용 계산이 복잡해 지는 문제가 발생 합니다. 이는 AWS 에서  고객할인을 최대한 많이 보장하고자 통합계정을 사용하고 있는 경우 예약인스터스(RI) 요금에 대해서 자동으로  혼합(Blended) 요금을 적용하기 때문입니다. 아래는 혼합요금에 대한 AWS 설명 입니다. http://docs.aws.amazon.com/ko_kr/awsaccountbilling/latest/aboutv2/con-bill-blended-rates.html#Blended_Calculated 간단하게 Blended 요금에 대해 알아 보면 아래는 t2.micro 에 대한 요금 기준 입니다. 온디맨드 는  $0.0144 표준 1년계약 (선수금 없음) 은  $0.009 입니다 아래 그림과 같이 통합으로 연결되어 있는 계정 중 하나의 계정에서만 RI 를 적용한다고 가정해 보겠습니다. 위의 그림으로 보면 Nmadopass 계정은 $0.0144 , Fico2000 계정은 $0.009 가 시간당 청구 되어야 합니다. 그런데 실제 청구서를 보면 (0.0144 + 0.009) / 2 = 0.0117 과 같이 Namdopass $ 0.0117 (Blended price*) fico2000 $ 0.0117 (Blended price*) 로 표출되는 것을 확인 할 수 있습니다. 아래 그림은 실제 청구서에 Blended 금액이 표시된 화면 입니다. 예약인스턴스가 혼합 요금으로 적용된 것을 확인 할 수 있습니다. 이렇게 복잡한 비용관리를 간소화 하고자 AWS 에서 최근 계정간 RI 공유 비활성화 기능을 지원하기 시작 했습니다. 설정을 위해서 마스터 결제 계정 콘솔로 로그인 합니다. 결제 대시

현수막/명함 등 인쇄물 디자인하기

이미지
문화체육행사_포스터 이번 포스팅으로는 행사라던지 일정표 등 여러가지 인쇄물 제작을 할 때의 디자인 방법에 대해 간단하게 소개하려고 합니다 ㅎㅎ 인쇄물 포토샵 세팅  해상도 (Resolution) 300 dpi  로 잡아줍니다. 안그러면 해상도가 낮아서 깨져 보여요. (보통 웹 작업을 할 경우 72dpi 로 잡혀 있음) 색상 (Color Mode) 인쇄물이므로 RGB 컬러가 아닌 CMYK 아시겠지만 RGB와 CMYK 색상은 차이가 많이 나니까 미리 잘 세팅하셔서 나중에 작업 다 끝내놓고 인쇄 직전에 멘붕에 빠지지 않으시기를..^^ <-경험자 일러스트레이터로 작업하실 경우는 컬러모드나 해상도 등은 문제가 되지 않으므로 인쇄물은 되도록 일러로 작업하시는 게 좋을 것 같습니다. 1. 현수막 만들기  체육행사_현수막 사이즈 보통 만들고자 하는 크기가 m 단위인데요 만들려고 하는 크기의 10분의 1정도 사이즈로 작업을 합니다. 예를들어 6m x 1m 사이즈의 현수막을 만든다고 하면 포토샵/일러로는 60cm x 10cm 로 제작을 합니다. 실물 크기로 만들 경우 컴퓨터의 성능이 엄청나지 않은 이상 작업에 무리가 있고, 10분의 1 사이즈로 제작해서 인쇄해도 괜찮아요~ 현수막은 처음부터 사이즈를 확정하고 작업하셔야 수정할 일이 덜 생깁니다.^^ 보통은 강당이나 어느 특정 장소에 걸어야 하기 때문에 사이즈가 제한적일거고, 그걸 미리 잘 알아두시고 작업하셔야 기껏 작업한 디자인을 버리는 일이 생기지 않아요^^ 2. 명찰 만들기 사이즈 실제 사이즈대로 만들되 명찰 사이즈보다 조금 더 작게 만들어 인쇄해야 나중에 명찰에 끼워넣을 때 고생하지 않아요^^ 3. 명함 이번에 아이프렌즈펫에서 명함 사이즈의 홍보카드를 만들었는데요, 작은 사이즈이지만 의외로 까다로워서 처음 제작단계부터 인쇄업체와 대화를 많이 하시는게 좋은 것 같구요  (아래의 경우 같이 일한 인쇄업체의 요

AWS Lambda - API Gateway로 S3 파일 업로드 API 만들기 #3 - API Gateway - Lambda 연결 및 테스트

이미지
안녕하세요. 남산돈가스입니다. AWS Lambda - API Gateway로 S3 파일 업로드 API 만들기 #1 , #2 에 이어 마지막 시간인 API Gateway - Lambda 연결 및 테스트가 남았습니다. 지난 포스팅까지 Lambda를 이용해 업로드 함수를 생성했고, API Gateway와 S3 기본설정을 통해 S3 파일 업로드 기능의 기본설정을 마무리했습니다. 오늘은 이 두 설정들을 연결하여 최종적으로 S3 업로드 Micro Service를 완성하겠습니다. 먼저 지난 포스팅에서 API Gateway를 생성했고, uploader라는 리소스까지 생성했습니다. 이번엔 이 uploader라는 리소스에 POST 매서드를 추가하고 작성했던 Lambda Function을 설정합니다. 통합 유형 - Lambda 함수 Lambda 리전 - 'Lambda함수를 생성한 리전' Lambda 함수 - '작성한 Lambda 함수명(리전 선택 시 자동완성으로 검색 가능)' 위와 같이 설정한 뒤 저장을 선택합니다. 저장을 선택 시 다음과 같이 uploader라는 리소스 밑에 post 매서드가 생성 된 것을 확인하실 수 있습니다. 다음으로, 우측 상단의 통합 요청을 선택하시면 아래와 같은 화면이 나옵니다. 그 중에서 하단의 본문 매핑 템플릿을 선택합니다. 요청 본문 패스스루에서 '정의된 템플릿이 없는 경우'를 체크하고 Content-Type에 매핑 템플릿 추가하여 multipart/form-data  을 추가하고 '템플릿 생성'에서 매서드 요청 패스스루를 클릭하시고 아래와 같은 패스스루가 나온 것을 확인하셨으면 저장을 누릅니다. 여기까지 설정을 완료하셨다면, API Gateway와 Lambda Function의 연결이 모두 완료 된 것입니다. 이제 실제 이 API Gateway를 배포하여 엔드포인트를 발급받고 실제 업로드가 되는지

android Multidex 적용

테스트 프로그램을 만들거나 프로젝트 초기에는 별문제 없지만 개발하는 소스와 라이브러리가 많아지면서 꼭 발생하는 오류가 있습니다. LEVEL EXCEPTION: com.android.dex.DexIndexOverflowException: method ID not in 바로 Dex 오류 입니다. 1. 오류 발생 원인  android apk에는 Dalvik Executable이라는 Dex 파일 존재합니다. 1개의 Dex파일 안에는 참조 될수 있는 함수의 개수는 65,536개 라고 합니다. 위의 에러는 함수가 총 65,536개 이상이 되었을때 발생하는 오류 입니다. 난 저렇게 많이 안썼는데 생각 하실수도 있지만 개발에 필요한 라이브러리 파일들의 함수들 까지 생각한다면 저 숫자는 어느정도 납득할수 있을 것입니다. 그래서 문제의 해결방법으로 Multidex를 적용하는 방법을 알아보도록 하겠습니다. 2. gradle 설정 android { defaultConfig { multiDexEnabled true } } dependencies { compile 'com.android.support:multidex:1.0.1' } Multidex를 사용하기위해서 defaultConfig 쪽에 사용하도록 설정 하고 dependecies 를 추가 합니다. 3. 소스 추가(Application이 있는 프로젝트) @Override protected void attachBaseContext(Context base) { super . attachBaseContext ( base ) ; MultiDex . install ( this ) ; } Application을 만들어서 작업하는 경우 Application 클래스안에서 MultiDex.install 함수를 추가 합니다. 3. 소스 추가(Application이 없는 프로젝트) < application android : name

[Xcode Tip] Git LFS 대용량 파일 다운받기

이미지
지난번에는 svn에 있는 레파지토리를 Git허브로 옮겨보았는데요. 사용하고 있던 라이브러리 중 500MB가 넘은 파일이 있었습니다. 이파일은 업로드 하고 나서, git clone으로 다운받아서 빌드를 했는데. 빌드가 되지 않았습니다. 여기저기 구글링을 해보았는데, LFS 설정이 되지 않아서 였습니다. LFS란 large file handling을 하기 위해 github에서 만든 오픈 소스입니다. Git에서는 대용량 파일을 다루기가 적절하지 않기 때문에, 이부분을 지원하기 위해 나온 오픈소스입니다. Git에서 clone을 받은 프로젝트에는 해당파일이 134 바이트였습니다. git 허브 에는 525MB으로 확인됩니다. 사용법은 의외로 간단했습니다. 우선 Xcode로 clone을 받습니다.  (터미널이나, github에서 직접 다운받으면, clone받은 프로젝트 내에 git 폴더가 생기지 않을 수 있으니, xcode로 clone을 해주세요) 그다음 터미널을 열고, 해당 프로젝트로 가서 git lfs pull 명령어를 눌러주시면, 다운로드 받는걸 보실수 있습니다. 다운로드가 완료 된 뒤에, 빌드를 하니, 정상적으로 빌드가 되었습니다. lfs을 이용하면, 대용양 파일을 git에 저장하고 사용할수 있습니다. * 참고 URL https://docs.gitlab.com/ee/workflow/lfs/manage_large_binaries_with_git_lfs.html

[AWS] 통합결제를 위한 조직에 계정 초대

이미지
지난번 포스팅에서 AWS 통합결제 계정의 구성방법에 대해 확인 해 보았습니다. 이번 포스팅 에서는 실제 통합계정을 구성하는 방법에 대해 알아 보겠습니다. 통합계정 생성을 위해서는 AWS Organizations 을 활용합니다. 먼저 저희 팀에서는 실제로 진행 중인 서비스의 구성을 어떻게 적용하였는지 소개해 드리고자 합니다. 아래는 통합계정을 설정하기 전 운영 상황입니다. 위와 같이 각 서비스 별로 별도의 계정을 구성하였으며 대금은 동일한 계정에서 지급되고 있었습니다. 이런경우 단지  각각의 계정에서 청구서를 별도로 확인해야 하는 번거로움 뿐만 아니라 AWS 사용량 증가에 따른 할인률 적용도 불가능한 상황이었습니다. 통합결제 할인 적용 및 운영의 편의를 위하여 아래와 같이 통합계정 조직을 구성하였습니다. 이렇게 구성하면 iFriendsPet 계정에서 Namdopass 및 Fico2000 계정의 청구서를 통합관리 할 수 있으며 3개의 계정에서 사용되는  AWS 사용량을 합산하여 통합할인 적용이 가능하게 됩니다. 통합계정 생성을 위해서는 결제를 진행할 마스터 계정에서 조직을 생성해 주어야 합니다. AWS 콘솔의 상단 우측 사용자 명을 클릭하고  “내 조직” 으로 이동합니다. 조직 설정 페이지로 이동하여 Create organigation 을 선택합니다. All Feature 와 Consolidate Billing 선택 화면이 표출되는데 일단 All Feature를 선택하여 계정을 생성하겠습니다. 조직이 생성 되었습니다. 이제 조직에 계정을 추가하기 위해 Add Account  를 선택합니다. 계정 초대를 위한 화면이 표출되면 Invie Account 를 선택하고 아래 입력란에 초청하고자 하는 계정의 Master Account E-mail 주소를 입력한 후 Invite 를 선택합니다. 이제 연결 하고자 하는 계정에 초대 진행이 완료 되었습니다. 이제 초대받은

android의 SharedPreferences알아보기

android에서 최초실행 여부, 간단한 설정한 값등을 어디에 저장 하면 좋을까요? 로컬DB에 쓰기, 파일에 쓰기, SharedPreferences 사용하기등 다양한 방법이 존재합니다. 그중에 이러한 작업들은 android에서 기본적으로 제공하는 SharedPreferences를 활용하면 쉽게 쓰고 읽을수 있습니다. 1. SharedPreferences란?  - 간단하게 말해 xml파일에 필요한 데이터를 저장하여 쉽게 읽고 쓰게 하는 것 입니다.  - 경로 : data/data/패키지명/shared_prefs/SharedPreference 에 파일이 저장 2. 객체얻어오기  - getSharedPreferences(String name, int mode)   -> 위 함수를 통하여 SharedPrefrences 객체를 받아 올수 있습니다.   -> 첫번째 인자  name은 해당 SharedPreferences의 이름입니다. 특정 이름으로 생성할수 있고 해당 이름으로 xml 파일이 생성된다고 생각하시면 됩니다.   -> 두번째 인자 mode는 읽고 쓰기 권한 관련된 Mode라고 생각하시면 됩니다. 일단 MODE_PRIVATE만 생각하세요. 3. 저장하기 SharedPreferences pref = getSharedPreferences ( " pref " , MODE_PRIVATE ) ; SharedPreferences . Editor editor = pref . edit ( ) ; editor . putString ( " key1 " , " value " ) ; editor . putInt ( " key2 " , 10 ) ; editor . commit ( ) ; 저장 하는 소스입니다. SharedPreferences 객체를 생성하고 데이터를 저장하기 위해서 Editor 객체를 받아 옵니다. Editor 객체를