빗썸 테크 아카데미 9

9일차

Reactive Programming Flux Flux는 Reactive Streams에서 정의한 Pulisher 구현체이다. 0~N개의 테이터를 발행할 수 있고 하나의 데이터를 전달할 때마다 onNext 이벤트를 발생시킨다. 모든 데이터가 전달 완료되면 onComplete 이벤트가 발생한다. 중간에 에러가 발생하면 onError 이벤트가 발생한다. non-blocking 상태의 Flux는 for문을 통해 하나씩 꺼내어 사용하지 않고 만들 수 있다. just 메서드를 사용해 Flux객체를 만들 수 있다. subscribe 메서드를 사용해 stream형식으로 데이터가 흐르도록한다. range 메서드를 통해 해당 범위의 숫자를 담는 Flux 객체를 만들 수 있다. fromArray를 사용해 위와 같은 새로운..

8일차

RabbitMQ RabbitMQ는 오픈 소스 메시지 브로커로써 Kafka에 비해 가볍고 온프레미스 및 클라우드에 배포하기 쉬운 장점이 존재한다고 한다. 기본적으로 설치와 환경변수 설정을 완료하고 rabbitmq_management 플러그인을 설치한다. 그 후, localhost:15672로 접속해 기본 계정은 guest/guest로 로그인하면 아래와 같은 화면이 나온다. MQ, 메시지 큐란 무엇일까? 메시지 큐란 키보드나 마우스를 통해 발생하는 사용자의 입력을 메시지로 전달하는 윈도우즈 시스템에서 어떤 프로세스에 대한 메시지를 저장하기 위해 할당된 큐이다. 메시지 큐에서 해당 입력에 대응하는 메시지를 읽어서 처리한다. DB를 두지않고 중간에 broker를 구현하여 메시지를 처리하는 방식으로 동작한다. 여..

7일차

@WebMvcTest 이름 그대로 MVC를 위한 테스트이다. 테스트할 특정 컨트롤러 클래스르 명시하여 사용한다. WebApplication 관련된 Bean만 등록하므로 통합 테스트보다 가볍고 빠르다. 단순히 위와 같은 컨트롤러가 있을 때 사실 현재 예제에서 ItemService가 하는 것이 아무것도 없기 때문에 위와 같이 @BeforeEach로 setUp을 해주지 않아도 테스트는 통과한다. 테스트 코드를 보면 바로 이해가 갈 것이다. get방식으로 "/hello"로 접근했을 때 HTTP 상태코드가 ok(200)이고, content가 hello와 동일한지를 체크한다. 이외에 contentType을 확인할 수도, perform을 하면서 contentType을 미리 지정해줄 수도 있다. 컨트롤러로 들어오는 j..

6일차

목업 테스트 @SpringBootTest는 Loosly Coupled에 위반되는 사항이 많아서 @ExtendWith 애노테이션을 적용시키고 Mockito를 사용한 목업 테스트를 진행한다. @SpringBootTest는 통합 테스트시에 사용한다. 단위 테스트시에 사용하는 것은 좋지 않다. 단위 테스트 시에 사용할 때는 classes 옵션을 통해 딱 필요한 클래스(스프링 빈)만 가져와서 사용해야한다. 가짜 목 객체를 만들어준다.(@Mock) 그 후 생성자를 사용해 위와 같이 사용할 수 있는데 다른 예시를 살펴보자. 생성자 주입과 유사한 코드이다. @Mock private OrderRepository orderRepository @BeforeEach void setUp() { OrderService order..

5일차

후.... 오늘 강의는 영상 소리가 진짜 아예 안들려서 설명을 아무것도 듣지못했다. 사실 거의 커리큘럼 상 거의 훑듯이 지나가기 때문에 소리 들려도 어차피 나혼자 키워드 잡고 따로 공부해야하는 건 마찬가지긴 하지만 ㅋㅋ 오늘은 그래서 아예 키워드만 잡고 혼자 공부하려함. Design Pattern @CrossOrigin 이 애노테이션에 대해 이야기하려면 먼저 CORS에 대해 알고넘어가야한다. CORS란 Cross-Origin Resource Sharing의 약자로써 추가적인 HTTP header를 사용해 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록하는 메커니즘을 뜻하는데 다른 origin에서 내 리소스에 접근하지 못하기 위해 사용된다. 여기서 origin(출처)가 뜻하는 의미는 다음과 같..

4일차

오늘은 MariaDB를 설치하고 Spring Boot와 연동한다. MariaDB를 설치하게되면 Heidisql이 자동으로 설치되는데 이는 mysql, mssql, mariadb를 통합적으로 관리할 수 있는 오픈소스 소프트웨어이다. 터미널에서 mariadb라는 database를 하나 create한 상태이다. 세션 관리자를 통해 새로운 세션을 열어 root 계정으로 로그인하였다. 여기서 만들어놓은 db를 관리할 수 있게 된다. MySQL, MariaDB의 프론트엔트 툴이라고 한다. mysql workbench와 비슷한 느낌의 툴인가? 사실 db에 데이터를 넣는 것은 jpa를 통해 진행하기 때문에 데이터가 정상 입력되었는지를 확인하는 용도로만 사용될 것 같다. "application.yml" 설정은 sprin..

3일차

2일차에 이해서 함수형 프로그래밍 진행 Predicate filterList를 그대로 사용하면서 새로운 Predicate를 만들 수 있다. UnaryOperator(단항 연산자) BinaryOperator(다항 연산자) 메서드 참조(::) 위, 아래 모두 같은 기능을 하는 동일한 코드이다. 여기서 threadGenerator의 Thread::new가 바로 메서드 참조이다. 메서드 참조를 통해 불필요한 매개변수를 제거하고 간단하게 나타낼 수 있다. Thread::new // == new Thread() Math::pow // == (foo1, foo2) -> Math.pow(foo1, foo2) Function func = (a) -> Object.equals(a); // == Function func =..

2일차

2일차 강의의 앞부분이 짤려있어서 중간부터 들어야하는 상황이다. 오프라인에 비해 온라인을 신경써주지 못하는 것 같아 좀 그렇긴 하지만 별 수 없지뭐.. 앞부분은 Docker Hub에 push하는 과정을 수업한 것 같음? 아마? Dockerfile 작성 Dockerfile은 각 줄이 명령어와 인자로 이뤄지며 명령어는 모두 대문자로 써주는 것이 관례라고 한다. 수업에서 만든 Dockerfile에서 사용된 명령어들을 살펴보자. FROM 하나의 Docker 이미지는 base 이미지부터 시작해서 기존 이미지위에 새로운 이미지를 중첩해서 여러 단계의 이미지 layer를 쌓아가며 만들어진다. base 이미지를 지정해주는 것이 바로 FROM 명령어이다. # 우분투 최신 버전 사용 FROM ubuntu:latest # ..

1일차

빗썸 테크 아카데미에 합격하여 서버 백엔드 교육생으로 약 2달동안 교육을 받게되었다. 어느 정도의 기반이 있다고 생각하여 합격자를 선출했다고하니 매우 빡빡한 과정이 될 것이라고 예상하고있다. 커리큘럼 1주. MSA 패턴과 클라우드 Docker 설치 및 MSA 개발환경 설정 Spring Boot 와 TDD 개발 Modern Java(Java 8)기반의 함수형 프로그래밍 Lambda와 Stream 2주. WebFlux와 Security Design Pattern Asynch와 Non-Blocking RESTful API Spring Security 3주. Apache Kafka REDIS를 활용한 Cache Kafka 기반의 Message Queue Zookeeper, Brocker Producer, Con..

반응형