분류 전체보기 88

[Docker]WSL2,DockerDesktop Docker 정보 동기화가 안되는 경우

WSL2 환경내에서의 Docker 컨테이너 정보와 DockerDesktop에서의 컨테이너 정보가 동기화 되지 않는 경우가 있다.이는 DockerDesktop에서 WSL2에서 사용하는 리눅스 배포판을 활성화 시켜주지 않아서 발생하는 문제로 내부에 WSL2을 이용한 환경구축 시 사용한 배포판을 활성화 시켜주면 된다.  - 설정 -> Resources -> WSL Integration -> 배포판 토글 활성화 -> Apply&restart -> 컴퓨터 재부팅

docker 2024.09.22

[Docker]도커 컨테이너에 WAS 설치 후 배포해보기

개인용 프로젝트에서 Docker 컨테이를 이용해 서버를 여러 대 띄워 사용할 경우가 많지는 않지만 Docker의 전반적인 작동방법을 익힐 수 있을 것 같아 시도해보았다. 실행계획은 아래와 같이 간단하다. 1. 테스트용 Docker 컨테이너 생성2. 테스트 컨테이너 내부에 Tomcat, JDK 설치3. host에서 빌드된 배포파일을 컨테이너 내부 배포경로에 복사4. 서버를 기동시켜서 결과 확인 - DockerDesktop으로 Docker 실행 후 cmd CLI를 이용해 작업, 폐쇄망이 아닌 상황을 가정해 작업하였다. 1. 테스트용 Docker 컨테이너 생성cmd 창에서 아래 명령어를 이용해 test용 컨테이너 생성 및 확인docker run -it --name tomcat -p80:8080 ubuntu:2..

docker 2024.09.18

[Docker]System has not been booted with systemd as init system (PID 1). Can't operate.Failed to connect to bus: Host is down 에러 해결방

- wsl2를 이용해 Docker 이용환경을 구축하다 보면 아래와 같은 에러를 마주칠 수 있다.System has not been booted with systemd as init system (PID 1). Can't operate.Failed to connect to bus: Host is down 에러의 원인은 리눅스 환경구축 시 서비스 관리자가 init으로 설정되어 그렇다. Docker를 이용하기 위해서는 서비스 관리자를 systemd로 변경해주어야 한다. 해결방법: 1. wsl2 최신버전으로 업데이트(최소한 wsl 0.67.6 이상 버전) 및 Ubuntu 접속powerShell에서 아래 명령어 입력wsl --updatewsl -d ubuntu** wsl version 확인 명령어 : wsl --..

docker 2024.09.18

[Docker]Window 환경에서 Docker 실행하기

- Docker는 리눅스를 기반으로 제작된 소프트웨어이므로, 윈도우 환경에서 설치 후 실행하기 위해서 리눅스 환경 구축이 필요하며 이를 위해서는 2가지 방법이 존재한다.  DockerDesktop 이용 공식 홈페이지에서 DockerDesktop을 다운받아 설치 후 실행 시 Window OS 위에 리눅스 환경 구축을 위한 경량화된 리눅스 가상머신이 올라가 Docker를 이용할 수 있게 된다.cmd나 powerShell과 같은 CLI를 이용해 직접 docker를 실행 조작할 수 있으며, DockerDesktop UI를 이용해서도 Docker를 조작할 수 있다. 가장 간단한 방법이나 21년 08월 이후부터 일부 기능이 유료화되어 이용에 제약이 있다. 참고링크: https://velog.io/@loganjeon..

docker 2024.09.18

swagger 추가 및 사용예시

Swagger란?API 문서화와 테스트를 위한 프레임워크 -  Swagger API 문서 생성 라이브러리 종류1. springFox - 2020년 7월 이후로 업데이트 안되고 있음.2. springDocs 의존성 추가( gradle 기준)- springFoximplementation 'io.springfox:springfox-swagger-ui:3.0.0'implementation 'io.springfox:springfox-swagger2:3.0.0'또는- springDocsimplementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'implementation 'org.springdoc:springdoc-openapi-ui:1.8.0' ..

개발환경 세팅 2024.09.16

소스코드 실행과 동작과정

소스코드 실행 시, 일반적으로 아래와 같은 일련의 과정을 거쳐 시스템이 실행되게 된다. 1. 코드 작성: 먼저 프로그래머가 소스 코드를 작성한다. 이 코드는 특정 프로그래밍 언어로 작성. 이 언어는 인간이 이해하기 쉽고 읽을 수 있는 형태이며, 컴퓨터가 이해하기 쉬운 기계어로 추후 변환된다. 2. 컴파일: 소스 코드는 컴파일러라는 특수한 프로그램을 사용하여 기계어로 변환되게 된다. 이 때, 컴파일러는 소스 코드를 분석하고 해당 플랫폼에 맞는 기계어로 번역한다. (컴파일러가 생성한 기계어는 보다 저레벨 언어인 어셈블리 언어로 변환되어 처리되기도 한다.) 3. 메모리 로드: 컴파일된 코드는 메모리에 로드된다. 4. CPU 실행: 프로그램이 실행되면 CPU(Central Processing Unit)가 명령어..

기타 2024.04.11

5~6장

어플리케이션: 특정 기능이나 작업을 수행하기 위해 설계된 소프트웨어 프로그램시스템 아키텍처에서 어플리케이션은 다음과 같은 관점에서 고려되어야 한다.1. 기능성  : 어플리케이션은 특정 기능이나 작업을 수행하기 위해 설계되며, 사용자나 다른 시스템과의 인터페이스를 통해 이런 기능들을 제공할 수 있어야 한다. 2. 모듈성  : 복잡한 시스템에서는 여러 어플리케이션들이 모듈화되어 각각의 기능이나 서비스를 독립적으로 제공할 수 있어야 한다.3. 상호작용  : 시스템 내의 다른 어플리케이션 또는 컴포넌트와 상호 작용하여 데이터를 교환하거나 서비스를 제공할 수 있어야 한다.4. 성능 및 확장성  : 아키텍처는 어플리케이션의 효율성, 확장성, 안정성을 고려해 설계되어야 한다.  : 클린 아키텍처에서 어플리케이션이란 ..

1~2장

1장- 전통적인 계층형 아키텍처 구조의 문제점전통적인 계층형 아키텍처 구조: 웹, 도메인, 영속성 계층으로 이루어져 있음각 계층의 역할은 다음과 같다.1. 웹 계층 : 웹과 가장 가까운 영역(표출단 계층)2. 도메인 계층 : 비즈니스 로직을 수행하는 영역(서비스 계층)3. 영속성 계층 : 데이터베이스와 가장 가까운 계층(매퍼 계층) : 계층간의 흐름은 상위 계층에서 하위계층으로 이어지며, 반대로 이루어질 수는 없다. 계층형 아키텍처 구조의 문제 1. 계층형 아키텍처는 데이터베이스 주도 설계를 유도한다. : 계층형 아키텍처의 각 계층의 의존성은 웹에서 도메인을 도메인에서 영속성 계층을 거쳐 최종적으로 데이터베이스를 향하게 하므로써 모든 계층이 데이터베이스를 바라보게 된다. : 위와 같은 의존성을 가질 경우..

[메타코딩] 13강. 스프링 부트의 동작원리?

6. 요청 주소에 따른 적적할 컨트롤러로 요청(Handler Mapping) : 해당 주소의 요청이 오면 적절한 컨트롤러의 함수 찾아 실행해준다. 7. 응답 : 요청에 따라 html파일 혹은 데이터를 응답하게 되는데, html 파일을 응답할 경우 ViewResolver(view 파일이 들어있는 경로를 prefix로써 자동으로 붙여준다.)가 관여하게 되고, 데이터를 응답하는 경우 MessageConverter가 작동하게 되는데 메시지 컨버팅 시 기본 전략은 json이다. 8. 스프링의 전체적인 실행 흐름

Spring 2023.10.02

[메타코딩] 12강. 스프링 부트의 동작원리?

5. 스프링 컨테이너 : DispatcherServlet에 의해 생성되어지는 객체들은 어디서 관리될까? 5.1 ApplicationContext : 생성된 객체들은 ApplicationContext 에 등록되고 이를 IoC(제어의 역전)라고 한다. 앞선 글에서 알 수 있듯이 개발자가 직접 new를 통해 객체를 생성하게 되면 해당 객체를 가르키는 레퍼런스 변수를 관리하기 어렵게 된다. 그래서 스프링은 IoC를 통해 객체들을 직접 메모리에 올리고 관리한다.이로 인해 개발자는 객체에 대한 레퍼런스 변수를 직접 관리할 필요가 없어지고, 생성된 객체들을 필요할 때 DI(의존성 주입)해 사용하면 된다. 즉, 이는 필요한 곳에서 ApplicationContext에 접근해 객체를 가져올 수 있다는 의미이다. Appli..

Spring 2023.10.02