(TIL) 20210109, 배포와 도커

2022. 1. 9. 03:07TIL(Today I learned)

반응형

📕Facts(한 것)


  • 팀원들과 모여서 ERD 설계
  • JPA에 대하여 심도깊은 대화를 나누려다 실패
  • 배포 방법 결정
  • 앱 디자인 거의 완료

 

📕Findings(배운 것)


항상 간단한 도메인만 설계했어서 ERD 설계를 따로 하지는 않았고, 

도메인 코드를 작성할 때 그 때 마다 수정하곤 했었다.

 

이번에는 적용해야할 도메인이 많아져서, ERD 설계의 필요성을 느꼈고, 

오늘 간단하게 진행해 보았다.

 


오랜만에 도커를 사용하기 때문에 도커 없이 어떻게 배포했는지, 도커를 사용하면 어떻게 배포하는지에 대해서 복습을 진행했다.

 

./gradle bootRun 을 사용하면 intellij에서 서버를 실행하는 방식과 똑같은 방식으로 서버를 띄워준다.

하지만 이렇게 매번 폴더에 접근해서 서버를 띄워줄 수는 없는 법.

 

그래서 ./gradlew assemble 명령어를 활용해서, 패키지를 하나의 .jar파일로 만들어 준다.

(Avengers! Assemble.)

그럼 이 파일을 가지고 배포를 할 수 있는 것이다. (이 파일은 /build/libs 에서 찾을 수 있다.

 

jar 파일 배포는 어떻게 하나요?

java -jar {jar파일 위치} -> 나의 경우 java -jar app/build/libs/app.jar

명령어를 주면 서버를 띄워준다.

 

이렇게 하면 gradle의 의존성, intellij의 의존성을 없애준 것이다.

그럼 java 버전에 있는 의존성은 어떻게 해결하냐? -> 이 문제를 해결하기 위해서 컨테이너 기술이 사용된다.

 

컨테이너? C++?

컨테이너 기술의 선두주자인 docker를 이용하면 쉽게 해결이 가능하다.

source from docker.com

기존의 경우에는 위와 같은 방식으로 서버가 구동되었다.

위 방식은 가상 머신을 통해서 작동하는 방식인데, VM 자체가 OS의 복사본을 가지고 있기 때문에, 많은 용량을 차지하고, 실행하는데 속도도 느리다.

 

하지만 컨테이너 기술을 보면,

source from docker.com

 

이렇게 각각의 앱은 독자적으로 돌아가지만, 모두 같은 OS 커널을 공유하면서 실행되게 된다. 

이 방식은 훨씬 적은 용량과, 필요로 하는 VM과 OS의 수가 적다. 속도가 빠른건 덤.

 

연결은 다음편에 쓰겠다.

 

 

 

 

📕Feeling(느낀 점)


오늘 느꼈다.

"PM의 위치는 잘 시키는 것."

하하하하하하...

 

 

 

 

📕여담


 

반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20220111, 사용자 생성  (0) 2022.01.12
(TIL) 20220110, RDS와의 조우  (0) 2022.01.11
(TIL) 20210106, 코틀린 가깝지만 먼 그대  (0) 2022.01.07
(TIL) 20220105  (0) 2022.01.06
(TIL) 20220104 + mysql(bitnami 충돌)  (0) 2022.01.05