✅Docker란 무엇이며 왜 쓰는가?
Docker가 뭐야?
컨테이너 기반의 오픈소스 가상화 플랫폼
Docker에서 중요한 개념인 컨테이너(Container), 이미지(Image)
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이며, 가상화 기술의 하나이다.
하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행된다.
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다.(Immutable). 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장된다. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
말그대로 이미지는 컨테이너를 실행하기 위한 모오오오오든 정보를 가지고 있기 때문에 더 이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다. 이제 새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 되고, 한 서버에 여러개의 컨테이너를 실행할 수 있고, 수십, 수백, 수천대의 서버도 문제없다.
Docker를 쓰는 이유 & 강점
Docker는 가상화 기술을 사용하여 여러 애플리케이션을 호스트 운영 체제와 독립적으로 실행할 수 있다.
이는 애플리케이션 간의 충돌을 방지하고 환경에 관계없이 일관된 동작을 보장하는 데 도움이 된다. 또한, 리소스 사용을 최적화하고 빠른 배포 및 확장을 지원하여 개발 및 운영 프로세스를 효율적으로 관리할 수 있게 한다.
요약하자면, Docker는 애플리케이션을 컨테이너화하여 환경 독립성과 이식성을 제공하는 플랫폼으로, 애플리케이션 개발, 배포 및 운영을 단순화하고 효율화하는 데 도움이 된다~
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
✅PostgreSQL란 무엇이며 왜 쓰는가?
PostgreSQL은 관계형 데이터베이스 관리 시스템(RDBMS)중 하나이다.
PostgreSQL의 강점은?
- 신뢰성과 안정성: 일관성 있는 데이터 저장 및 데이터 무결성 유지
- 확장성
- 다양한 데이터 유형 및 기능: JSON, 배열, 지오메트리, 풀 텍스트와 사용자 정의 데이터 유형 추가 가능
- 오픈소스와 커뮤니티
PostgreSQL와 MySQL의 주요 차이점
- PostgreSQL는 복잡한 쿼리와 대규모 데이터베이스를 다룰 수 있는 기능이 풍부
- PostgreSQL은 테이블 상속, 함수 오버로딩 등의 기능을 갖춘 객체관계형 DB, MySQL은 순수관계형 데이터베이스
- MySQL의 경우 웹사이트와 온라인 트랜잭션에 적합하고 PostgreSQL은 복잡한 대규모 분석 프로세스에 적합하다.
- MySQL은 기능이 많지 않기 때문에 "속도와 안정성, 단순함, 용이성" 에 중점을 둔다.
- PostgreSQL은 까다로운 db상황을 처리하는데 도움이 되는 기능(ex 확장성)이 있다.
- https://www.integrate.io/ko/blog/postgresql-vs-mysql-the-critical-differences-ko/#whydodeveloperschooseoneovertheother
TypeORM을 사용하면 PostgreSQL과의 상호 작용을 더 편리하게 할 수 있고, 데이터베이스 모델을 객체 지향적으로 다룰 수 있다.
✅ORM, TypeORM이란?
ORM(Object Relational Mapping)이 뭘까?
객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업
TypeORM이란?
TypeORM은 node.js에서 실행되고 TypeScript로 작성된 '객체 관계형 매퍼 라이브러리' 이다.
TypeORM은 MySQL, PostgreSQL, MariaDB등 여러 DB를 지원한다.
즉 ORM을 통해 객체간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결하므로, SQL문을 짤 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.
✅Docker & PostgreSQL
Docker를 사용하면 PostgreSQL과 같은 DB 시스템을 컨테이너로 실행하고 관리할 수 있고, PostgreSQL DB 서버도 독립적인 컨테이너로 실행될 수 있다.
- Docker를 사용하여 PostgreSQL을 실행하면 호스트 운영 체제와는 독립된 환경에서 데이터베이스를 관리할 수 있다, 즉 어떤 운영체제나 환경에서 Docker 컨테이너로 포함된 PostgreSQL을 실행할 수 있다.
- 이식성(위에 말했던, 다른 운영체제, 하드웨어, DB시스템, 클라우드 환경 등 다양한 환경에서 작동/통신할 수 있도록 설계되는것)과 확장성이 높아진다.
- 여러 개의 PostgreSQL 컨테이너를 실행하여 개발, 테스트, 운영 환경을 분리하고 필요에 따라 컨테이너를 확장할 수도 있다.
즉 다양한 환경에서 동작하는데 필요한 수정과 설정이 최소화되고, 쉽게 배포, 관리할 수 있다~~~
'필수 개발지식 > 개념정리, 유용한팁' 카테고리의 다른 글
[개발자 필수지식] 웹 브라우저에 URL을 입력하면 어떤 일이 생기나요? (0) | 2023.09.11 |
---|---|
Redis란 무엇인가? 윈도우에서 Redis 설치하기 (0) | 2023.06.05 |
3계층구조에 Access/Refresh Token 적용하기! (0) | 2023.05.15 |
백엔드 개발자(Backend Developer)란? (0) | 2023.05.09 |
Joi, Javascript object schema validator (0) | 2023.05.05 |