Home
디피의 개발일지
Cancel

Canary 테스트

[devops] Canary 테스트 안정적인 버전을 릴리즈하기 전에 테스트 버전을 일부 사용자에게 배포하는 것을 말한다. 만약 카나리 버전에 심각한 버그가 발생한다해도 사용하는 사용자가 적기 때문에 피해를 최소화할 수 있다. 또한 안정적인 버전과 테스트 버전이 모두 배포된 상태이기 때문에 A/B 테스트가 가능하다. 유저가 직접 카나리 버전을 ...

blue-green 배포

[devops] blue-green 배포 애플리케이션의 이전 버전에 있던 사용자 트래픽을 이전 버전(blue)과 거의 동일한 새 버전(green)으로 점진적으로 이전하는 애플리케이션 배포 모델이다. 이때 두 버전 모두 프로덕션 환경에서 실행 상태를 유지한다. blue에서 green으로 완전히 이전되면 blue는 롤백에 대비하여 대기 상태에 두거나 ...

스프링 파일업다운로드

[spring] 파일 업/다운로드 HTML 폼 전송 방식 HTML에서 폼을 전송하는 방식(Content-Type)에는 다음 두가지가 있다. application/x-www-form-urlencoded : 문자와 같은 데이터를 키와 함께 전송하는 방식 ex) username=Kim&age=20 ...

Spring 파라미터 Validation

[spring] 파라미터 validation BindingResult HTTP 메세지 컨버터에서 발생한 데이터 바인딩 오류를 담아 컨트롤러에서 이용할 수 있는 객체. 다음과 같이 바인딩 오류가 발생할 수 있는 파라미터 바로 다음에 파라미터로서 추가한다. @PostMapping("/add") public String addItemV1(@ModelA...

유닛테스트 구현 검증이란?

비즈니스 코드를 먼저 작성하고 유닛테스트를 작성할 때, 완성된 코드를 보고 테스트 코드를 작성하다보면 내부 구현에 맞추어 테스트를 작성하게 되고, 구현 자체를 검증하게 되는 일이 많이 발생하였다. 유닛 테스트에서는 구현이 아닌 행동을 검증(test behaviour, not implementation)해야한다. 따라서 구현을 검증한 테스트 코드를 고...

Keep-Alive

아래와 같이 http 헤더를 보다보면 keep-alive라고 명시된 부분이 보일 때가 있다. connection : keep-alive Keep-Alive:timeout=5, max=1000 이 keep-alive는 무슨 뜻일까 궁금하여 찾아보았다. keep-alive connection : keep-alive connec...

CORS

CORS : Cross-Origin Resource Sharing(교차 출처 리소스 공유) 서로 다른 출처(Origin)에서 리소스를 공유할 때 적용되는 정책이다. 출처(Origin)이란? URL은 다음과 같이 여러 개의 구성요소로 이루어져있다. 여기서 출처란 protocol + host + port 을 뜻한다. 이 조합이 같아야...

mybatis dynamic field

게시글 검색을 개발하는 도중 검색의 대상이 되는 field(title | nickname | content)를 동적으로 mybatis 쿼리문 상에 사용해야할 일이 있었다. 따라서 다음과 같이 #{} 를 사용하여 변수를 넣었으나 오류가 발생했다. <where> <when test="type != 'hashtag'"> atc....

InvalidDefinitionException

@ResquestBody로 받는 매개변수의 클래스에 @NoArgsConstructor를 빼니 InvalidDefinitionException 에러가 발생했다. @PostMapping("/login") public String login(@Valid @RequestBody LoginRequestBody loginRequestBody) @Getter...

interceptor

스프링 인터셉터는 스프링 MVC가 제공하는 기술로, 서블릿 필터하고는 적용순서, 범위, 사용방법이 다르다. 소개 스프링 인터셉터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에...