분류 전체보기

    [Docker] 계속 잊어버려서 작성하는 도커 사용 간단 정리

    계속 잊어버려서 작성하는 도커 사용 간단 정리 도커에서 사용하는 이미지의 이름 형식 [저장소 이름] / [이미지 이름] : 태그 ex) alicek106/ubuntu:14.04 컨테이너 생성 docker run -i -t ubuntu:14.04 docker run 명령어는 컨테이너를 생성하고 실행하는 역할을 한다. -i -t 옵션은 컨테이너와 상호(interactive) 입출력을 가능하게 한다. ubuntu:14.04 이미지가 로컬 도커엔진에 존재하지 않는다면 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려 받게된다. 태그 미지정 시, latest 한 것으로 내려받음. docker images 를 입력하면 도커 엔진에 존재하는 이미지의 목록을 출력한다. 컨테이너 생성 시에는 run 이 아..

    [JPA] Specification을 이용한 DataJPA 조회

    Specification을 이용한 DataJPA 조회 Specification을 이용하면 쿼리를 이용하는데 있어 여러 조건들을 손쉽게 처리할 수 있고 동적인 처리가 가능하다. Specification을 사용하지 않을 때의 코드를 먼저 살펴보겠다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; private int age; private LocalDate birth; public Member(String name, int age,..

    [Spring] @FeignClient 에 대해

    @FeignClient 에 대해 Feign은 netflix에서 개발한 REST client 다. 현재는 스프링으로 포함된 것 같다. 기존에 RestTemplate 을 사용한 API 호출을 코드양을 줄이고 굉장히 간편하게 호출할 수 있게끔 도와준다. ext { set('springCloudVersion', "2021.0.0") } implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } 다..

    [Spring] @Validated vs @Valid

    @Validated vs @Valid @Valid는 이전에도 자주썼었기에 어떤 역할을 갖고 있는지 알고있었지만, @Validated는 생소했다. 특히 object가 아닌 파라미터에 대한 valid 작업이 인상깊었는데 이 글을 통해 정리해보도록 하겠다. @PostMapping("/check") public String check(@RequestBody @Valid CheckRequest request) { return "ok"; } --- @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class CheckRequest { @Positive private int num; } @Valid는 javax.validation.constraint..

    [Spring] MapStruct의 @Mapper, @Mapping 에 대해

    MapStruct의 @Mapper, @Mapping 에 대해 MapStruct은 엔티티와 DTO간의 매핑을 손쉽게 하게끔 도와준다. implementation 'org.mapstruct:mapstruct:1.4.2.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final' 사용법에 대해 바로 들어가보겠다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Chicken { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; priva..

    [Kubernetes] 쿠버네티스 개념 간략 정리

    쿠버네티스 개념 간략 정리 쿠버네티스에 대해 간략히 정리해보려고 한다. 상세하게는 말고 기초적인 개념 정도로 정리해보겠다. 쿠버네티스를 언급하기 앞서 도커 컨테이너에 대해서 말을 안할 수가 없다. 컨테이너는 어떤 점이 좋을까? vm과 비교해서 빠르게 무언가를 띄울 수 있고, 이미지를 사용해서 버전관리도 용이하고 여러 환경에서 동일한 환경을 사용할 수 있다는 장점이 있을 것이다. 컨테이너에 api 서버도 올리고, mysql도 올리고, jenkins도 올리고 사용을 하게 될 것이다. 그렇지만 컨테이너의 수가 많아질수록 하나씩 관리하기가 힘들어질 것이다. api 서버를 여러대 올려놨는데 버전업을 할 때 하나씩 다 해주어야 할 것이고, 어떤 컨테이너가 문제가 생겼는지 체크를 다 해줘야 할 것이다. 컨테이너에 이..

    [Spring] AOP에 대해 (8)

    AOP에 대해 (8) 이번에는 프록시 방식의 AOP가 야기하는 문제점을 살펴보겠다. 내부 호출 문제 앞서 정리한 것을 토대로 우리는 다음과 같이 프록시가 동작한다는 것을 알 수가 있었다. client -> proxy -> target 호출의 순서로 말이다. 그렇다면 다음과 같은 코드는 어떨까? @Slf4j @Component public class CallServiceV0 { public void external() { log.info("call external"); internal(); } public void internal() { log.info("call internal"); } } @Slf4j @Aspect public class CallLogAspect { @Before("execution(*..

    [Spring] AOP에 대해 (7)

    AOP에 대해 (7) 포인트컷 지시자의 종류는 다음과 같다. execution: 메서드 실행 조인 포인트를 매칭 within: 특정 타입 내의 조인 포인트를 매칭 args: 인자가 주어진 타입의 인스턴스인 조인 포인트 this: 스프링 빈 객체(스프링 AOP 프록시)를 대상으로 하는 조인 포인트 target: Target 객체(스프링 AOP 프록시가 가르키는 실제 대상)를 대상으로 하는 조인 포인트 @target: 실행 객체의 클래스에 주어진 타입의 어노테이션이 있는 조인 포인트 @within: 주어진 어노테이션이 있는 타입 내 조인 포인트 @annotation: 메서드가 주어진 어노테이션을 가지고 있는 조인 포인트를 매칭 @args: 전달된 실제 인수의 런타임 타입이 주어진 타입의 어노테이션을 갖는 조..