전체보기 15

[Docker] Docker가 필요해진 이유

도커란 리눅스 컨테이너를 기반으로 한 Go 언어로 작성된 오픈소스 가상화 프로젝트 기존의 가상화 기술 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식으로, 하이퍼바이저에 의해 관리되는 운영체제는 게스트 운영체제(Guest OS)라고 하고, 대표적인 가상화 툴로 VirtualBox, VMware 등이 있다. 가상 머신은 게스트 운영체제를 위한 라이브러리와 커널을 모두 포함하므로 배포할 때의 이미지의 크기가 커지고, 엄청난 크기의 이미지를 애플리케이션으로 배포하는 것은 이슈가 발생할 수 있다. 성능 손실의 문제도 발생할 수 있다. 하지만, 도커 컨테이너는 리눅스의 chroot, namespace, cgroup을 사용하여 프로세스 단위의 격리 환경을 만든다. 따라서 각 애플리..

DevOps/🗳 Docker 2024.04.11

웹 서버와 웹 애플리케이션 서버에 대해

서버를 설정하는 방법에 대해 알아보자. 웹 시스템에서 성능에 영향을 주는 것은 웹 서버 세팅, WAS 서버 세팅, DB 서버 세팅, 장비 세팅이 있다. WAS와 WS의 차이 WAS(웹 애플리케이션 서버)는 비즈니스 로직을 넣을 수 있고, 대표적으로 Tomcat, PHP, ASP 등이 있다. 반대로 WS(웹 서버)는 비즈니스 로직을 넣을 수 없으며 Nginx, Apache 등이 있다. 웹 서버(Web Server)는 클라이언트에게 요청을 받고 정적인 request을 받아 정적인 컨텐츠로 응답한다. 사용자의 접근이 많은 사이트에서는 정적인 파일들을 CDN(Content Delivery Network)이라는 서비스를 사용하여 저장한다. 웹 애플리케이션 서버(Web Application Server)는 db 조..

[QueryDSL] Q클래스 생성 오류

QueryDSL은 컴파일 단계에서 엔티티를 기반으로 QClass를 생성하는데 import 오류가 났다. 스프링 부트 3.0 버전이 되면서 QueryDsl의 설정 방법이 달라졌다. 하지만 Querydsl 폴더가 보이지 않아 build clean를 하고 다시 querydsl 디펜던시와 하위 설정들을 build.gradle에 추가했으나, generated 폴더도 생성되지 않는다. UPDATE 디펜던시를 삭제하고 재시도를 몇번이나 하던 끝에 마침내 Q클래스가 생성되었다! Spring Boot 3.0 Querydsl 설정 implementation "com.querydsl:querydsl-jpa:${dependencyManagement.importedProperties['querydsl.version']}:jak..

[Docker] 도커 포트 충돌 문제

스프링부트로 개발을 하다보면 서버 충돌 문제가 발생한다. 배치 프로젝트에 도커로 MySQL 서버를 돌리면서 서버 충돌이 일어났다. Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3308 -> 0.0.0.0:0: listen tcp 0.0.0.0:3308: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. 해결방법은 관리자 설정으로 cmd 창을 열어 해당 포트(3308)를 죽여야 한다. 실행할 명령어 1. 관리자 설정으로 cmd 창을 연다. netstat -ano | findstr :33..