AWS 무료로 이용하기 (과금편.. -_ -)

2018. 4. 30. 22:41

AWS는 12개월 무료 서비스를 제공합니다.

대부분의 클라우드 서비스가 그렇듯 말이지요.


하지만 AWS는 그리 친절하지 않습니다.

무료 서비스를 이용하기 위해 가입을 해야하구요.

가입을 위해 카드 정보를 기입해야합니다.

그리고 까딱 실수하면 자동으로 과금됩니다...


AWS 프리티어 결제 콘솔


바로 위처럼 말이지요.

프리티어 서비스 요약항목을 보시면 아시겠지만...

예상 사용량이 프리티어 제한에 미치지 않습니다.


그렇다면 대체 왜!?


그럼 무엇을 실수 했는지 한 번 보시죠.

상세 내역에 어떤 이유로 요금이 청구되었는지 나옵니다.


과금 상세 내역


요금이 청구된 이유는 Elastic IP Address 였습니다.

EC2 Instance를 내렸다가(Stop) 올리면(Start) IP가 바뀝니다.

이것이 너무 불편해서 고정 IP를 할당했죠. (1개 무료)


그런데 EC2 Instance를 내려놓고 3일이 경과합니다.(72Hrs)

요금이 청구될 거라는 사실은 꿈에도 모른채 말이지요.


이유인 즉슨,

EC2 Instance 없이 IP를 고정해두는 것은 AWS 입장에서 손해입니다.

IP를 할당할 Instance가 없기 때문이지요.

그것을 시간당 0.005$로 사용자에게 부담하도록 합니다.

Instance를 내렸을 때 경고라도 좀 줬다면.. 좋았을 텐데요.


무료 티어용 EC2 Instance는 한달 내내 사용해도 무료입니다.

괜히 내렸다 올릴 필요가 없어요.

고정 IP가 필요하신 분은 할당하고 EC2 Instance를 유지하세요.


혹은 EC2 Instance를 내릴 때, Elastic IP도 함께 해제하셔야합니다.


과금을 피하려면 말이죠.

고작 $0.50 과금으로 뭘 그러냐.. 싶지만.

제가 결제 콘솔을 확인 하지 않고 계속 뒀다면 얼마일까 싶네요.


과금 폭탄을 맞았다는 분들이 주변에 있어 공유해봅니다.

(네트워크 테스트를 꽤나 한다고 들었습니다만.. 미확인 사실)


이왕 서비스를 사용해보기로 결심했다면 자주 접속해서 확인하세요. ^^;;

TechTrip 놀면서 배우기.

[건대] 마스터키-이불 밖은 위험해

2018. 4. 28. 23:09

이번에 소개할 방 탈출은.. "이불 밖은 위험해"


마스터키 건대점에 가서 즐겼다.

근처 500m 안에 방탈출 카페가 4개나 더 있어!!

(경쟁이 치열하다는 의미임)

안그래도 이 위치에 있던 다른 방탈출 카페가 망하고 들어온 마스터키~

재미없으면 망함!!!

이 근처 망하지 않고 있는 방탈출이 있다면 해보는 것이 좋을 듯.


이 테마는 둘이서 하기 좋은 그런 느낌!?


마스터키 건대점이불 밖은 위험해

업체난이도: ★★★

체감난이도: ★★ (3/5)

스토리: ★★★★ (4/5)

추천도: ★★★ (4/5)


Player 참고: 쓸데없는 담력을 가진 Jason과 겁 많은 똑똑한 Julie


Comment: (성공/3 hint)

 Jason: "적절한 힌트(빠른 포기)는 체감 난이도를 낮추는 법ㅋ"

 Julie: "입장하는 것 만으로도 재미를 느낄 수 있다니!"


이불 밖은 위험해는 '감성테마'~

직원이 탈출구에서 휴지를 들고 기다린다는 소문도... 


실제 누군가 살고 있는 집에 들어간 느낌의 인테리어.

근데 피곤할 때 가지않는 것을 추천해.

빠르게 시작할 수 없을거야 ㅎㅎ 가보면 알아.


장치보다 자물쇠가 많은 편인데, 지루하지는 않다.

어렵지 않게 달칵, 달칵 풀면서 진행하는 맛이 있는 그런 방.

(근데 hint 3개나 썼...!?)

Jason 계산능력이 한 번 빛을 발했고,

Julie가 푸는 방법도 모르지만 스토리를 통해 답을 맞췄... >_<

시간 말고, hint를 남겼어야했는데 그런 부분이 좀 후회된다.


이 방은 인테리어와 스토리를 음미하면서 천천히..

하지만 꼭 성공하세요. (힌트는 무제한 입니다! 으흐흐)


방탈출은 1시간을 꽉채워 즐겨야 가성비가 좋은 그런 느낌.


억지스럽지 않고, 스토리도 (뻔하지만) 괜찮아서 충분히 즐길만 함.

특히 공간과 문제가 잘 어우러지는 편(더 이상은 생략한다)

방이 여러 개 있고 넓다 생각했는데, 가장 작은 방이라고....!?..

하나도 무섭지 않은 테마인데 Julie는 삑 덜컥에 놀람 -_-;;


마지막으로 인증샷을 남기며...

탈출 인증샷




TechTrip 스압없는 소소한 Ep./방탈출

Angular Domain Model

2018. 4. 24. 21:21

도메인 모델이라고 쓰고, 데이터의 분리라고 읽어야할 것 같습니다.

지금까지 Budget Component에 데이터를 다 넣어뒀었는데요.


테이블 데이터를 아래와 같이 가지고 있습니다.

export class BudgetComponent implements OnInit{
    ...
    consumptions = [{
        amount: 12000,
        desc: "food"
    },{
        amount: 10000,
        desc: "beverage"
    },{
        amount: 12000,
        desc: "dissert"
    }];
    dataSource = new MatTableDataSource(this.consumptions);
    ...
}


이 부분을 조금씩 덜어내보려고 합니다.

TypeScript는 ECMAScript 2015 문법을 사용할 수 있죠.


계속 사용해오던 export, import가 그에 해당합니다.

src/domain 이라는 폴더를 만듭니다.

Consumption이라는 Module을 아래와 같이 만들어줍니다.

export class Consumption {
    amount: number;
    desc: string;

    constructor (amount:number, desc:string){
        this.amount = amount;
        this.desc = desc;
    }
}


그리고 BudgetComponent에서 아래와 같이 사용합니다.

import { Consumption } from '../domain/consumption';
    ...
    consumptions = [
        new Consumption(12000, "food"),
        new Consumption(10000, "beverage"),
        new Consumption(5000, "dissert")];

    dataSource = new MatTableDataSource(this.consumptions);
    ...


이번엔 consumptions를 분리해볼까요.

날짜별로 소비를 정리한다고 생각하고 만들어봅니다.

역시 Consumption을 사용해줘야하기 때문에 import하구요.

consumption을 추가할 수 있는 method도 만들어줍니다.

import { Consumption } from "./consumption";

export class DailyExpense{
    datetime: Date;
    consumptions: Array;

    constructor(datetime: Date){
        this.datetime = datetime;
        this.consumptions = new Array();
    }

    addConsumption(consumption: Consumption){
        this.consumptions.push(consumption);
    }
}


그러면 DailyExpense를 사용해봅시다.

Consumption을 사용할 때와 동일합니다. 

import { DailyExpense } from '../domain/dailyExpense';
import { Consumption } from '../domain/consumption';

...    
    dailyExpense : DailyExpense;

    dataSource : MatTableDataSource; 
    remain: number;

    ngOnInit(){
        ...
        this.dailyExpense = new DailyExpense(new Date());
        this.dailyExpense
              .addConsumption(new Consumption(12000, "food"))
        this.dailyExpense
              .addConsumption(new Consumption(10000, "beverage"))
        this.dailyExpense
              .addConsumption(new Consumption(5000, "dissert"))
        this.dataSource 
              = new MatTableDataSource(this.dailyExpense.consumptions);
        ...
    }


이번에는 ngOnInit()에서 데이터를 만들어 넣었습니다.

좀 더 복잡해보이지만 유연해졌죠.

결과물은 이전과 동일합니다만...

데이터 변경 및 관리를 개발하기 더 수월해졌습니다.

'IT Tech > Angular' 카테고리의 다른 글

Angular 업데이트(Update from 5 to 6)  (0) 2018.05.19
Angular Service 만들기  (2) 2018.05.13
Angular 테스트(Test) 하기  (0) 2018.04.11
Angular Material Table  (0) 2018.04.02
Angular Material Icon  (0) 2018.03.18

TechTrip IT Tech/Angular