잠깐 띄운다고 생각한 RDS를 한달넘게 내리지 않아서 1000달러가 넘는 비용이 청구되었다. AWS에 환불요청에 대한 기록입니다. 1. AWS '지원센터' (Support Center) 로 이동 2. 'Create Case' Support Case 생성하기 3. 환불 요청 작성하기 작성 내용은 단순 실수로 인한 사고라고 하면서 요청해도 빠르게 대응해주었습니다. 만약 2달이상에 걸쳐서 청구된 경우는 별도로 신청해야 됩니다. 예를들어 1월10일~2월10일까지의 요금이 청구되었다면, 1월10일~1월31일 먼저 신청하고, 이후에 2월1일~2월10일에 청구된 케이스에 대해서 2건을 별도로 신청해야 합니다.
Bean을 생성하는 3가지 방법 1. @Component 애노테이션으로 생성하기 스프링부트에서 가장 보편적으로 사용하는 방법으로 @Component 애노테이션을 사용할 수 있다. 개발자가 직접 작성한 Class에만 사용할 수 있다. @Component public class MyComponent1 implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("MyComponent1.afterPropertiesSet"); } } 2. @Bean 애노테이션으로 생성하기 주로 외부 라이브러리의 객체들을 Bean으로 만들때 사용하거나, 같은 타입의 빈을 여러개 생성하고 싶을 ..
IntelliJ Live TemplateIntelliJ에 Live Template 기능을 이용하면 공통적으로 혹은 반복적으로 작성되는 코드를 지정해두었다가 빠르게 삽입하는 기능을 말한다.자세한 기능에 대한 설명은 아래 영상으로 갈음한다. :) Live Template으로 테스트 코드 작성하기Live Template기능은 이전부터 알고 있었는데, 필요성을 느끼지 못하고 사용하지 않다가 반복적인 테스크 코드 구조를 짜다가 드디어 현타가 오고 말았다.모든 테스트 코드를 자동으로 할 순 없지만, 매번 import 하는 과정을 줄일 수 있었고 @MethodSource를 활용한 테스트 코드는 템플릿으로 등록해 두면 편하게 작성할 수 있다. 개인이나 팀마다 테스트 코드를 작성하는 방식이 조금씩 다르나 Live Te..
개요 이번 포스팅에서는 AWS Lambda(이하 람다)에서 AWS SQS에 생산한 메시지를 보내고, SQS에서 받은 메시지를 다른 람다에서 소비하는 과정을 기록하겠습니다. 람다와 SQS에 대한 기본 설명은 생략합니다. 1. AWS SQS 대기열 생성하기 먼저 실습을 위해 메시지를 주고 받을 SQS 대기열을 생성합니다. 다른 설정은 모두 기본 셋팅값으로 하여도 무방합니다. 액세스 정책 또한 람다에서 호출하기 때문에 별다른 설정이 필요 없습니다. 2. 메시지 Producer AWS Lambda(람다) 생성하기 실습을 위해 사용할 람다 함수를 선언합니다. 람다 함수의 이름과 런타임을 지정해줍니다. (이 포스팅에서는 Node.js 12.x로 진행하였습니다.) 함수가 생성되면 다음과 같은 코드를 실행하여서, 람다..
Spring Cloud Function(Spring Boot) 프로젝트를 AWS Lambda에 배포하는 방법에 대해 기록해보겠습니다. 1. 프로젝트 gradle 설정 샘플 ext { set('springCloudVersion', "2020.0.2") } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } dependencies { implementation 'org.springframework.cloud:spring-cloud-function-adapter-aws' implementation 'com.amazonaws:aws-lambda-j..
왜 전역 변수를 사용하면 안 되나요? 1. 전역 변수(global variable)를 사용하게 되면 페이지에 포함된 모든 자바스크립트 변수들이 동일한 범위에서 실행됩니다. 같은 이름의 전역 변수나 전역 함수가 존재하는 경우 스크립트 뒤에 포함된 스크립트가 이전에 선언된 변수나 함수를 덮어 씌우게 됩니다. 이는 애플리케이션의 크기가 커지게 될수록 더 자주 발생될 것이며 연관되지 않은 코드들 간의 변수 오염을 발생시키게 되어 예상하기 힘든 버그를 발생시킵니다. 2. 하나의 단위 기능이 외부에 제공해야 하는 변수나 함수 이외에도, 내부적으로만 사용하는 변수와 함수가 노출되게 됩니다. 이는 단위 기능이 모듈로써 동작하기 힘들게 만들고 캡슐화(encapsultation)를 저해하는 행동입니다. 캡슐화가 되지 않은..
개요 프론트엔드 전문이 아닌 개발자가 CSS로 고통받는 이유는 CSS의 요소들이 예상한 대로 동작하지 않기 때문이다. 이번 포스팅은 CSS에 대한 기본적인 개념이라기보다 CSS로 고통받는 순간에 확인해볼 만한 키워드들을 정리해보았다. 그리고 CSS를 공부한 지 오래된 백엔드 개발자라면, 특히 flexbox나 grid가 아직까지도 잘 사용되지 않는다고 믿는다면 다시 한번 공부하고 mdn 문서와 친해지는 것을 적극 권한다. 1. Margin Collapsing (margin 상쇄) margin-top, margin-bottom이 의도한 대로 동작하지 않는다면 Margin Collapsing(이하 margin 상쇄)을 의심해봐야 한다. margin 상쇄란 여러 개의 margin 중 제일 큰 margin만 사용..
순환참조는 뭐가 문제일까? 개인 프로젝트는 혼자서 진행하기 때문에 내가 만든 설계가 제대로 된 설계인지 확인해보기 어렵다. 이를 확인하기 위해서 한 가지 기준을 두었는데 패키지간의 의존 방향을 단방향으로 하여 순환되지 않도록 하자는 것이었다. 다이어그램을 그려보고 의존성이 단방향을 나타낼 때는 제대로 된 설계를 했다는 성취감도 들었다. 그러다 문득 이런 생각이 들었다. '그래서 순환참조가 뭐가 문제일까?' 의존 먼저 의존에 대해서 다시 생각해보았다. A객체가 B객체에게 의존한다는 것은 A객체가 B객체를 사용한다는 것이다. 다이어그램으로 화살표를 나타내면 A→B라는 형태로 나타난다. 만약 '변경에 의한 영향' 이라는 기준에서 생각해보면 화살표의 방향은 반대로 나타내야 될 것이다. B가 변경될 때 A에게 영..