
0. Dockerfile:: Docker 이미지를 만들기 위한 스크립트 (Instruction / 명령어 집합):: 각 명령어는 Docker 이미지의 하나의 레이어(Layer)로 변환:: 실행할 프로그램(앱) + 앱을 구동할 엔진 + 구동을 보조해줄 Bins/Libs 정의구성 요소1. Application 파일 (구동 코드)2. Environment Variables (환경 변수3. Runtime Environment (런타임 환경) :: 애플리케이션을 실행하기 위한 OS나 런타임 환경(예: Java, Python 등)의 버전 및 설정을 정의4. 서드파티 라이브러리5. Cut-down OS :: 실제로 컨테이너 내에서 실행되는 최소한의 운영 체제 (예: Alpine Linux).Ex)더보기# F..

*. 심화 내용*. 1 Docker는 왜 항상 Linux 명령어를 사용하나?더보기Docker는 기본적으로 Linux 환경에서의 컨테이너화를 목표로 설계됨=> So, Docker 자체가 Linux의 네이티브 시스템 기능을 사용하여 관리됨(Linux Containers(LXC) 기술을 기반)=> 컨테이너화를 위해 Linux의 cgroups(Control Groups)와 namespaces를 사용Namespaces:: 각 프로세스가 고유한 환경을 갖도록 분리시켜주는 기술:: 네트워크, 파일 시스템, 프로세스 등을 격리:: 프로세스별 FS, 네트워크, UID 등 영역 구별cgroups:: 시스템 자원을 격리하고 제어하는 기술:: CPU, 메모리, 네트워크, 디스크 등의 자원을 제한:: 컨트롤 그룹으로 분리 ->..

0. Docker Network:: 컨테이너 생성 시, 컨테이너는 NET namespace를 통해 구현된 가상화 기법으로 각각 독립된 네트워크 공간 할당:: 이때, 기본적으로 외부와 통신이 불가능한 상태:: 컨테이너의 포트를 노출(expose)해서 외부와 연결이 필요Docker Network는 다중 컨테이너 간의 네트워크 연결을 처리즉, Docker Compose 네트워크의 원리:: Linux의 IP Tables 기반 네트워크를 사용하여 컨테이너 연결:: 가상 브릿지 / L2 Switch(Docker0)를 중심으로==> 내부 :: 가상 / 물리 NIC 연결==> 외부 :: NAPT(Network Address Port Translation) or IP Masquerade 지원0.1 Docker0항목설명생..

1. 단일 / 다중 컨테이너:: Docker 격리 정의 시 - 단일 or 다중 이미지 구성 비교애플리케이션:: 컨테이너의 조합:: 컨테이너 = 격리된 공간에서의 프로세스가 동작하는 기술컨테이너 구성app 관리관리 주체1호스트 내 1개의 단일 컨테이너단일 이미지 구성 및 구동Dockerfile1 호스트 내 n개의 다중(멀티) 컨테이너다수 이미지 구성 및 구동Docker-Compose(하나의 YAML 파일로)1.1 Host와 Container의 관계에 따른 시스템 선택(단일 vs 다수의 호스트)시스템설명Docker- 컨테이너화 플랫폼 및 런타임- 1개의 호스트에 대한 단일 or 다중 컨테이너Kubernetes- M개의 호스트 내 N 개의 컨테이너 설정 - 여러 컨테이너 런타임에서 컨테이너를 실행 및 관리하..

0. 격리를 위한 가상화 (VM vs Container):: 환경에 따라 VM or Container로 구분구분 VM (Virtual Machine) Container 환경 정의 Guest OS + Bins/Libs + App B Bins/Libs + App B 특징 OS 레벨 독립적 애플리케이션 구동 환경 Bins/Libs 레벨 독립적 어플리케이션 구동 환경 소모 리소스 리소스 소모가 크고 느리다. 리소스 소모가 적어 가볍고 빠르다 최대 1 OS 내 3 VM 정도 ..? 1 OS 내 1000 Container 가능 컨테이너 :: 격리된 공간에서 프로세스가 동작하는 기술 (Isolated Process in Userspace) 1. Docker ?:: 컨테이너화 기술을 활용한 개발 및 배포 자..

0. 도커를 사용하는 이유Consistency - 일관성 보장Isolation - 격리Multiple Containers - 다중 컨테이너 지원0.1 일관성 보장 (Consistency)일관성:: 시스템 복제본이 있을 경우 최신의 데이터가 되도록 보장:: 현 글에서의 일관성의 의미는 개발 환경과 배포 환경에서 같은 환경이 되어야 함을 의미1. Application 파일2. Environment Variables (환경변수)3. Runtime Environment (런타임 환경, 버전)4. 서드파티 라이브러리5. Cut-down OS일관성 보장:: 다양한 로컬(인스턴스)에서도 도커로 일관된 어플리케이션 구동 가능0.2 격리(Isolation):: 로컬(인스턴스)의 환경과 분리된 도커 환경으로 로컬 환경을..
0. BasicErrorController:: Spring 기본 에러 처리 (페이지 기반):: 적절한 ExceptionResolver가 없으면 해당 컨트롤러를 통해 기본적인 에러 페이지를 제공:: 에러 발생 시, 기본적으로 /error로 에러 요청을 다시 전달 - WebMvcAutoConfiguration를 통한 기본 설정BasicErrorController까지의 흐름도:: 출처: https://mangkyu.tistory.com/204 [MangKyu's Diary:티스토리] WAS(톰캣) -> 필터 -> 서블릿(디스패처 서블릿) -> 인터셉터 -> 컨트롤러컨트롤러(예외발생) -> 인터셉터 -> 서블릿(디스패처 서블릿) -> 필터 -> WAS(톰캣)WAS(톰캣) -> 필터 -> 서블릿(디스패처 서블릿..
1. ResponseEntity@ExceptionHandler(Exception.class)public ResponseEntity handleException(Exception ex) { // 예외 발생 시 500 Internal Server Error와 오류 메시지 반환 return new ResponseEntity("Internal Server Error: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);}2. Optional을 통한 예외처리- 일반적으로 null에 대해 안전한 처리를 위해 Optional을 이용public Optional findUserNameById(Long id) { User user = userRepository..

1. 클라이언트로부터 요청을 받는 4가지 방법@RequestBody :: JSON 값을 받음:: Body에 JSON or XML 등을 DTO 객체로 받음@PathVariable:: URI 상의 가변 변수Ex) /api/users/{id}@RequestParam:: 단일 파라미터Ex) /api/users?key=value@ModelArribute:: 다수의 파라미터(DTO 객체로 받기) Ex) /api/users?key1=value1&key2=value2더보기4. 관련 이슈- 관련 실습 코드를 이용해 PUT 요청을 보내던 중, 값이 모두 null이 되는 상황이 나왔다.@PutMapping("/update/{id}")public MemberResponseDto update (@PathVariable Inte..

0. 3계층 아키텍처 패턴:: 애플리케이션을 세 개의 주요 계층으로 분리하여, 각 계층이 특정 역할을 수행 - 관심사의 분리:: 단일 책임 원칙(Single Responsibility Principle) 적용에 효과적구성1. Presentation Layer 2. Business Logic Layer3. Data Access Layer0.1 Presentation Layer (프레젠테이션 계층):: 사용자 인터페이스와 상호작용하는 계층:: 사용자 요청을 처리하고, 결과를 사용자에게 반환- Spring에서 흐름 :: 클라이언트 요청 → DispatcherServlet → Controller → View → 응답구성- Controller, View, Model / DTO (Data Transfer Ob..
- Total
- Today
- Yesterday
- ssh
- asac7기
- useContext
- git
- useReducer
- useCallback
- asac#asac7기
- asac7#asac
- ASAC
- asac7
- useLayoutEffect
- react
- Nginx
- useMemo
- acas#acas7기
- memo
- useRef
- useState
- acac
- useEffect
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |