빗썸 테크 아카데미/TIL

1일차

민철킹 2021. 8. 19. 00:32

빗썸 테크 아카데미에 합격하여 서버 백엔드 교육생으로 약 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, Consumer

아무래도 빗썸 특성상 트래픽이 한번에 과도하게 몰리는 시스템이가 때문에 3주차가 가장 중요하고, 빗썸에서도 가장 강조하고 필요로하는 기술이라고 한다.

 

4주. AWS기반 Cloud 서비스

  • AWS RDS를 통한 클라우드 DB
  • AWS EC2 서비스 구현
  • Cloud 보안 시스템 설정
  • TEST를 통한 API 안정성 구축

 

5주부터는 팀을 만들어 실무 프로젝트를 진행한다고 한다.

 


모놀리식 아키텍쳐 vs 마이크로서비스 아키텍쳐

 

쉽게 말해 모놀리식은 일체형, 마이크로서비스는 모듈화가 되어있는 서비스이다.

모놀리식은 데이터가 한 시스템 안에서만 움직이기 때문에 보안에 유리하다. 도커를 사용하여 MSA를 구성하게되면 각각의 시스템(컨테이너)가 데이터를 주고 받는 과정에서 보안적인 문제가 있을 수 있다. 

 

모놀리식은 오류가 발생하면 전체 시스템에 영향을 끼칠 수 있고 전체 시스템에 대한 테스트 코드를 작성해야하는 등 유지보수에 어려움이 있지만, MSA는 오류가 발생한 모듈에 대한 유지보수만 진행하면되므로 유지보수성이 높다!!

 

마이크로서비스를 위해 항상 등장하는 것은 도커!!

각 모듈(컨테이너)들이 도커 위에서 실행되고 그것이 하나의 서비스를 이루고있는 구조이다.(확장성 매우 높음)

동일한 구조를 가지고 있지만 파이썬으로 작성된 시스템과 자바로 작성된 시스템을 만들 수 있고 함께 맞물려 돌아가게 할 수 있다.

 

각 키워드에 대한 공부는 스스로 해야할 듯하다.(세세하게 알려주지 않음)

 


DockerMongoDB를 설치했고, IntelliJ는 이미 유료버전을 사용하고 있기 때문에 패스했다.

 

프로젝트를 생성하고 도메인, 컨트롤러를 만들었다.(너무 기초 내용이라 이 부분도 따로 첨부X)

 

MongoDB를 사용하기 때문에 의존성에서 spring data mongodb를 추가해주었다.

이것을 사용하는 코드를 보니 Spring Data JPA와 매우매우 유사했다.

아래는 Spring Data MongoDB를 사용한 Repository이다!

그리고 application.properties 또는 yml에서 설정을 해주어야한다. spring.data.mongodb.uri

이를 실제 사용하는 코드이다.

CommandLineRunner는 처음본 인터페이스였는데 스프링 부트가 띄워지는(구동되는)시점에 run메서드가 실행되는 인터페이스라고 한다.

즉, 스프링부트가 구동될 때 db를 초기화(deleteAll)하고 고객 4명을 save하고 각 고객을 findAll을 통해 모두 조회한다음 단순히 콘솔창에 출력시킨다.

또한 mongoDB를 확인해보면 마찬가지로 정상적으로 save되어있는 것을 확인할 수 있다.

 


Dockerfile은 Docker Image가 어떤 단계를 거쳐 빌드되야 하는지를 담고있는 텍스트 파일로써 Dockerfile에 나열된 명령문을 차례대로 수행하여 이미지를 생성해준다.

 

docker compose복수 개의 컨테이너를 실행시키는 도커 애플리케이션이 정의를 하기 위한 것으로,Compose를 사용하면 YAML 파일을 사용하여 애플리케이션의 서비스를 구성할 수 있다.

https://docs.docker.com/compose/

 

Overview of Docker Compose

 

docs.docker.com

 

도커는 설정을 이미지화시키고 이를 공유하여 다른 환경에서 실행될 수 있도록 해준다.

 

우리가 Github에 소스코드를 올리듯이 Docker Hub에 이미지화된 설정을 올려놓는 것으로 이해하면된다.

 

Docker Hub의 MongoDB 이미지를 터미널에서 "docker pull mongo" 명령어를 통해 내려받았다.

 

아래는 docker 주요 명령어 모음이다.

images, ps , pull/push, rm/rmi, start/stop, run 정도는 많이 사용하는 명령어이므로 익숙해지자!

 

docker images 명령어 입력

도커이미지의 목록을 보여주는데 mongo를 pull했기 때문에 위와 같이 나타난다.

 

현재는 컨테이너는 없는 상태이다. 

mongo라는 이미지를 가지고 컨테이너를 만들어보자. docker run 명령어!

여기에는 옵션이 존재한다.

it는 컨테이너를 연 다음 그 환경 안에서 cli를 사용한다는 의미이고, 269는 컨테이너로 만들 이미지 id의 앞 3글자이다.

/bin/bash는 리눅스 명령어로써, git bash창을 실행시키는 명령어이다.(컨테이너 내의 리눅스 환경 실행시킴)

위와 같이 출력되었다면 리눅스 내부로 들어온 것이다! 현재는 할 게 없으니 exit를 입력하고 나오자.

실제 도커를 사용하는 것은 내일할 예정이다.

run 명령어의 옵션

 

 

 

 

컨테이너가 생성되었는지를 확인해보자. docker ps 명령어!

docker ps현재 실행 중인 컨테이너의 목록을 보여준다. exit를 통해 현재 실행 중인 컨테이너가 없으므로 아무것도 출력되지 않지만 docker ps -a 명령어를 입력하면 모든 컨테이너를 보여준다.

컨테이너가 생성된 것을 확인할 수 있다.

 

 

내일 도커 키워드(이미지, 컨테이너 등)에 대해 스스로 찾아보는 시간을 가지자😉

반응형

'빗썸 테크 아카데미 > TIL' 카테고리의 다른 글

6일차  (0) 2021.08.27
5일차  (0) 2021.08.25
4일차  (0) 2021.08.24
3일차  (0) 2021.08.20
2일차  (0) 2021.08.20