Redis 와 spring webflux 활용하여 미니 프로젝트를 만들어 보려고 하다가 너무 무지하다는 것을 느끼고 나름 정리를 해보려고 한다.
Redis와 spring webflux는 따로 포스팅 하려고 한다.
미니프로젝트 시작에 앞서 인터넷 검색을 하며 어떤 구조로 셋팅을 할가 생각하다가 맨날 톰캣 기반으로만 사용해봤지 다양한 기술들을
사용해보지 않아 Docker 기반에 어플리케이션을 올려서 써보자! 다짐했다.
그래서 찾게 된 Docker...
너란 놈..
그래서 왜 이걸 써야하지?
그전에 톰캣과 Docker의 차이점도 궁금하여 끄적여 봤다.(https://foulerback.tistory.com/10)
다시 본론으로 돌아와 왜 Docker를 써야하지? 톰캣으로는 안되나? 의문이 들다가 돌고 돌아 단어 하나에 집착하면서 파고 들다가
여기까지 왔다..
몇 년 전에 진작 했어야 했는데 늦은감이 있어 머리에 쥐가 난다.
1. Docker란?
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이라고 한다.
Docker는 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다.
Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있다.
2. 그래서 왜 쓰지?
그래서 Docker를 왜 써야하지? 구애 받지 않으려고? 구글링을 계속 했다. 다 비슷한 말만 하는데 피부에 와닿는 내용이 있었다.우분투와 centos 의 명령어만 보더라도 미세하게 조금 다른점을 사용해본 사람들은 알 수 있다.하지만 Docker는 어떤 환경이라도 Docker 명령어만 안다면 해결이 가능하다고 한다.SI 프로젝트 하면서 이곳 저곳 다니면 아파치, jeus, centos 등등등 각 사이트별로 log하나 보려고 해도 명령어가 미세하게 다르고또 찾아보는 일을 안해도 되겠구나 싶다.근데 사실 서버 관리를 실질적으로 하지 않으면 걍.. 몇 번 검색하면 되는데 불편함을 못느끼는 사람들도 있을 수 있다.(나같이...)그래서 또 왜 이걸 써야 편리하지? 좋지? 왜? 집요하게 파보자..
3.Docker의 장점
대부분 구글링을 검색해보니 서버 관리라는게 처음 도입했을 때는 뭐 기본적으로 이중화를 해서 세팅했다고 하자.
시간이 지나면 당연히 서비스는 커질거고 서버들을 붙이고 이것 저것 붙이고 차세대 한다고 나누고 버리고 하다보면 모든 서버 전체의
큰 그림을 머릿속에 다 그리고 있는 사람은 많지 않을 것이다.
그냥 구조는 알겠지만 세세한 설정이나... 옛날에 이랬나? 문서 작성해도 까먹고.. 상세히 안쓰면 멘트도 기억 안나고..
이런 점을 Docker의 장점으로 내세우고 있다.
그러면서 하나 본 명칭이 있다.
Snowflakes Server (스노우 플레이크 서버)
예전에 일반적으로 서버를 운영하는 방법은 서버를 설치한 후 OS를 인스톨한 후에, 필요한 소프트웨어와 애플리케이션을 설치하여 운영하는 형태였다. 여기에 문제가 생긴 경우 패치를 하거나 정기적인 보안 패치 튜닝들을 해당 서버에 지속적으로 적용하고, 애플리케이션은 CI/CD 등의 툴을 이용하여 배포하는 구조를 가지고 있었다.
이렇게 한번 설치한 서버에 계속해서 설정을 변경하고 패치를 적용하는 등의 업데이트를 지속적으로 적용하여 운영하는 서버를 스노우 플레이크 서버 (눈송이 서버)라고 하는데, 이렇게 설정된 서버는 다시 똑같이 설정하기가 매우 어렵다. 모든 설정과정이 문서화가 잘되어 있으면 모르겠지만 대부분 문서화가 꼼꼼한 경우도 드물뿐더러, 담당자가 바뀌거나 관리 조직이 바뀌는 경우에는 그 이력이 제대로 유지되는 경우가 없다. 그래서 장비를 업그레이드 하거나 OS를 새로 인스톨해서 같은 환경을 꾸미고자 할때 예전 환경과 동일한 환경을 구성하기가 어렵고 그래서, 누락된 설정이나 패치등에 의해서 장애가 발생하는 경우가 많다.
이렇게 한번 설정을 하고 다시 설정이 불가능한, “마치 눈처럼 녹아버리는" 서버의 형태를 스노우 플레이크 서버라고 한다.
위와 다르게 Docker를 포함한 컨테이너 툴은 이미지 기반 배포 모델을 제공한다고 한다.
따라서 서버 1을 구축해둔 당시의 이미지 기반을 갖고 있기 때문에 2,3,4 서버를 만들어도 차이가 없게 가능하다고 한다.
또한 Docker는 이 컨테이너 환경 내에서 애플리케이션(또는 애플리케이션을 구성하는 결합된 프로세스) 배포를 자동화한다.
이러한 툴은 Linux 컨테이너를 기반으로 구축되어 Docker를 사용자 친화적이고 고유하게 만들어 주므로 사용자는 그 어느 때보다 쉽게 애플리케이션에 액세스하고, 신속하게 배포하고, 버전 및 버전 배포를 제어할 수 있다고 한다.
그 밖에 너무 관련 내용들이 많아서 정리도 할 겸 Chat gpt에게 물어봤다.
Docker는 애플리케이션을 빠르고 일관되게 배포하고 실행할 수 있게 해주는 컨테이너화 플랫폼입니다. Docker의 주요 장점은 다음과 같습니다:
- 일관된 개발 환경: Docker는 "컨테이너"라는 독립적인 환경을 제공하므로, 개발, 테스트, 배포 환경이 모두 동일하게 유지됩니다. 이를 통해 "내 컴퓨터에서는 잘 되는데"라는 문제를 줄일 수 있습니다.
- 빠른 배포: Docker 이미지를 사용하면 애플리케이션과 모든 종속성을 하나의 패키지로 묶어서 배포할 수 있습니다. 이는 배포 시간을 대폭 단축시킬 수 있습니다.
- 경량화: Docker는 가상 머신(VM)보다 훨씬 적은 자원을 사용합니다. 각 컨테이너는 운영 체제의 커널을 공유하며, 독립적인 실행 환경을 제공하므로 오버헤드가 적습니다.
- 애플리케이션의 격리: Docker는 애플리케이션을 격리된 환경에서 실행시킬 수 있기 때문에, 서로 다른 애플리케이션이 충돌하지 않도록 할 수 있습니다. 여러 버전의 라이브러리나 패키지를 사용할 때 유용합니다.
- 확장성: Docker는 수십, 수백 개의 컨테이너를 쉽게 배포하고 관리할 수 있도록 해줍니다. 이를 통해 애플리케이션을 확장하거나, 서비스의 부하를 분산시키는 것이 용이합니다.
- 이식성: Docker 컨테이너는 어떤 환경에서도 동일하게 실행되므로, 개발자가 로컬에서 만든 컨테이너를 테스트, 스테이징, 프로덕션 환경에서 동일하게 실행할 수 있습니다. 이는 다양한 운영 체제 및 클라우드 플랫폼 간 이식성을 제공합니다.
- 버전 관리 및 롤백: Docker 이미지는 버전 관리가 가능하여, 문제가 발생했을 때 이전 버전으로 손쉽게 롤백할 수 있습니다. 이를 통해 안정성을 높이고 빠르게 문제를 해결할 수 있습니다.
- 자동화 및 CI/CD 통합: Docker는 지속적 통합(CI) 및 지속적 배포(CD) 파이프라인과 잘 통합되어 자동화된 빌드, 테스트, 배포 프로세스를 지원합니다.
- 보안: Docker는 컨테이너 간 격리를 제공하므로, 각 애플리케이션이 다른 애플리케이션과 충돌하거나 보안 위협을 주지 않도록 보호할 수 있습니다. 또한, Docker는 최신 보안 업데이트 및 패치를 손쉽게 적용할 수 있도록 돕습니다.
Docker를 사용하면 애플리케이션 개발 및 배포가 더 빠르고 효율적이며, 클라우드 환경에서의 이식성과 확장성이 뛰어나기 때문에 많은 기업에서 도입하고 있습니다.
[출처] chat gpt
4. 마치며
미니프로젝트 전에 간략하게 봤다.
그래서 결국 사용하는데 불편한 점이 없는 사람은 계속해서 안쓸 것 같은데, 여러 서버를 운영해보면서 불편한 점이 있는데
개선하고 싶다, 바꾸고 싶다, 방법이 없을가를 계속 고민하는 사람들이라면 써야할 이유가 충분할 것 같다.
하지만 단어에 대해 파고파고 들어가면... 끝이 없을 것 같다..
Docker를 보다가 리눅스 컨테이너 부터... 시작을 했는데 차이점..
또 뭐랑 차이점... 다 기존에 쓰던 기술들을 고수님들이 변형해주고 변형해서 계속 기술력이 올라가고 있는데
이제와서 다 찾아서 확인하려니 한큐에 끝내긴 어려울 것 같다.
Docker를 찾아보다가 쿠버네티스라는 용어도 찾아서 이건 다음에 한 번 볼 예정이다.
다른 곳에서 많이 쓰니까..?
뭐라도 계속 공부하다보면 내년엔 또 다른 내가 되있겠지~!?
물경력 화이팅~!
'인프라 > Docker' 카테고리의 다른 글
Docker error : git bash에서 실행 에러 (1) | 2024.11.21 |
---|---|
톰캣과 Docker(도커)의 차이 (0) | 2024.11.20 |
Docker Desktop 설치 (1) | 2023.11.19 |