전체 글369 Spring 애플리케이션에서 메모리 할당 기준과 사용 시점 Spring 애플리케이션에서 메모리 할당 기준과 사용 시점Spring 애플리케이션이 실행될 때 메모리 관리가 중요한 역할을 합니다. 메모리 할당은 애플리케이션이 어떤 작업을 수행하고 있는지와 애플리케이션의 크기에 따라 결정됩니다. Spring 애플리케이션에서 메모리를 어떻게 할당하고 사용하는지 이해하려면, JVM의 메모리 구조와 Spring 프레임워크에서 메모리를 사용하는 방식을 함께 살펴보아야 합니다.1. Spring 애플리케이션의 메모리 할당 기준Spring 애플리케이션이 실행될 때, 메모리는 주로 JVM(자바 가상 머신)에 의해 관리됩니다. JVM은 애플리케이션이 필요로 하는 메모리를 자동으로 할당하며, 메모리 할당은 주로 다음과 같은 세 가지 요소에 의해 결정됩니다.1.1. JVM 메모리 구조JV.. 프로그래밍공부(Programming Study)/스프링(Spring Framework) 2024. 9. 22. Spring 애플리케이션 부팅 과정, 부팅속도와 CPU 할당량과의 관계 1. Spring 애플리케이션 부팅 과정 개요Spring 애플리케이션은 부팅 시 여러 단계의 초기화 작업을 거칩니다. 이 부팅 과정에는 빈 초기화, 애플리케이션 컨텍스트 생성, 설정 파일 로드 등이 포함됩니다. 이를 좀 더 구체적으로 살펴보면 다음과 같습니다.빈 스캐닝 및 등록: 클래스패스에서 빈(Bean)을 찾아내고, 이를 스프링 컨테이너에 등록합니다.의존성 주입: 빈 간의 의존성을 분석하고, 필요한 의존성을 주입합니다.설정 파일 로드: application.properties 또는 application.yml 파일에서 설정 값을 읽고 이를 애플리케이션에 적용합니다.애플리케이션 컨텍스트(ApplicationContext) 초기화: 컨텍스트가 완전히 구성된 후, 모든 빈이 준비되면 애플리케이션이 실제로 .. 프로그래밍공부(Programming Study)/스프링(Spring Framework) 2024. 9. 22. CPU, Dispatcher, Scheduler, Run Queue, Task: 개념과 동작 원리 1. CPU 개념CPU(중앙처리장치, Central Processing Unit)는 컴퓨터 시스템의 핵심 구성 요소로, 모든 연산 작업을 처리하는 장치입니다. CPU는 주로 명령어 처리, 데이터 연산, 제어 신호 생성의 역할을 합니다.명령어 처리: 메모리에서 프로그램 명령어를 가져와 이를 해석하고 실행.데이터 연산: 산술 및 논리 연산을 수행.제어 신호: 시스템의 각 부품과 장치를 제어.2. Dispatcher의 역할Dispatcher는 운영체제에서 중요한 모듈 중 하나로, CPU 스케줄러가 선택한 작업(프로세스나 스레드)을 실제로 CPU에서 실행할 수 있도록 합니다. Dispatcher는 문맥 교환(Context Switching), 모드 변경(User Mode ↔ Kernel Mode), 프로세스 실.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 22. Kernel에서 시스템 콜이란? DevOps Engineer가 꼭 알아야 할 시스템 콜 정리 1. 시스템 콜이란?시스템 콜(System Call)은 응용 프로그램이 운영 체제의 커널에 직접 접근하여 시스템 자원(파일, 프로세스, 네트워크 등)을 사용할 수 있도록 하는 인터페이스입니다. 일반적으로 사용자 수준에서 실행되는 프로그램은 하드웨어 자원에 직접 접근할 수 없기 때문에, 운영 체제 커널을 통해 이러한 작업을 처리해야 합니다. 시스템 콜은 이러한 작업을 중재하는 역할을 합니다.예를 들어, 파일을 읽거나 쓰는 작업, 새로운 프로세스를 생성하는 작업, 네트워크 연결을 설정하는 작업은 모두 시스템 콜을 통해 이루어집니다.2. 시스템 콜의 특징보안성: 시스템 자원은 커널에 의해 보호되며, 시스템 콜을 통해서만 접근 가능합니다.추상화: 시스템 콜은 하드웨어 자원에 대한 추상화를 제공하여 응용 프로그램.. 프로그래밍공부(Programming Study) 2024. 9. 21. Argo Rollout과 AWS Spot Termination Event 대응: Pod 하나일 경우 순단 방지 및 Pod Drain 후 즉시 재배치하는 방법 1. Argo Rollout이란?Argo Rollout은 Kubernetes의 고급 배포 전략 도구로, 무중단 배포를 지원합니다. 카나리 배포나 블루-그린 배포 등 다양한 배포 방식을 쉽게 구현할 수 있으며, 실시간 모니터링 및 트래픽 제어 기능도 제공합니다.2. AWS Spot Termination Event란?AWS Spot Termination Event는 AWS에서 Spot Instance가 종료되기 2분 전에 발생하는 이벤트로, 이를 활용해 Pod를 안전하게 drain하고 다른 노드로 재배치할 수 있습니다. 하지만, Pod 하나만 존재하는 경우에는 순단(서비스 중단)이 발생할 수 있습니다.3. Pod 하나일 경우 순단 발생 문제Pod가 하나만 있는 경우, Spot Instance 종료 시 해당 .. 프로그래밍공부(Programming Study)/DevOps 2024. 9. 20. Kubernetes에서 QoS와 Resource Request 및 Limit의 개념: CPU와 Memory의 의미 1. QoS란 무엇인가?QoS(Quality of Service)는 Kubernetes에서 파드를 실행할 때, 그 파드에 대한 자원 할당의 우선순위를 관리하는 메커니즘입니다. Kubernetes 클러스터는 여러 파드를 동시에 실행하기 때문에, 각 파드에 적절한 자원 할당 및 제한을 설정해야 효율적으로 리소스를 사용할 수 있습니다.Kubernetes는 파드의 QoS 클래스를 세 가지로 나눕니다:Guaranteed: 요청된 자원과 제한이 일치하는 경우. 이 클래스는 가장 높은 우선순위를 갖습니다.Burstable: 요청된 자원이 제한보다 작을 때. 유연한 사용이 가능하지만, 자원이 부족할 경우 제한이 있을 수 있습니다.BestEffort: 자원 요청이 전혀 설정되지 않은 경우. 우선순위가 가장 낮고, 자원이.. 프로그래밍공부(Programming Study)/DevOps 2024. 9. 20. macOS에서 `smartctl`, `lspci`, `ethtool` 명령어 사용하기: 대체 방법과 설치 가이드 1. macOS에서 smartctl이란?smartctl은 하드 드라이브(HDD)나 SSD의 S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) 데이터를 확인하여 디스크의 상태를 모니터링하고, 잠재적인 오류를 감지하는 도구입니다. 리눅스에서 기본적으로 사용되는 도구로, macOS에서도 설치할 수 있습니다.2. macOS에서 smartctl 설치 및 사용법macOS에서는 smartctl이 기본적으로 포함되어 있지 않지만, Homebrew를 통해 설치할 수 있습니다.설치 방법:Homebrew 설치:macOS에 Homebrew가 설치되어 있지 않다면, 터미널에서 다음 명령어를 입력해 설치하세요:/bin/bash -c "$(curl -fsSL htt.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 20. macOS에서 `free` 명령어를 대신하는 방법: 메모리 사용량 확인하기 1. macOS에서 free 명령어란?free 명령어는 리눅스에서 시스템의 메모리 사용량을 확인하는 데 사용되는 명령어입니다. 이 명령어를 통해 사용 중인 메모리, 캐시된 메모리, 스왑 메모리 등의 정보를 쉽게 확인할 수 있습니다. 하지만 macOS에서는 리눅스에서 제공하는 free 명령어가 기본적으로 제공되지 않습니다.대신, macOS에서는 메모리 사용량을 확인하기 위해 몇 가지 다른 명령어 및 도구들을 사용할 수 있습니다.2. macOS에서 free 명령어 대체 방법macOS에서 메모리 사용량을 확인하는 데 자주 사용되는 방법은 vm_stat와 top 명령어입니다. 이 두 명령어는 터미널을 통해 메모리 관련 정보를 제공하며, 각각 다른 방식으로 시스템 메모리 상태를 보여줍니다.3. vm_stat 명령.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 19. 멜트다운(Meltdown)과 스펙터(Spectre): CPU 보안 취약점의 이해 1. 멜트다운(Meltdown)과 스펙터(Spectre)란?멜트다운(Meltdown)과 스펙터(Spectre)는 2018년에 발견된 심각한 CPU 보안 취약점으로, 컴퓨터 프로세서의 설계 결함을 악용하여 민감한 데이터를 탈취할 수 있는 공격입니다. 이 취약점들은 주로 인텔, AMD, ARM 등 여러 제조사의 프로세서에서 발견되었으며, 전 세계적으로 많은 시스템에 영향을 미쳤습니다.이 두 공격은 컴퓨터가 메모리와 데이터를 처리하는 방식을 악용하며, 공격자는 정상적인 권한을 우회하여 보호된 메모리 영역에 접근할 수 있습니다. 이를 통해 비밀번호, 암호화 키, 개인 정보 등 중요한 데이터를 탈취할 수 있게 됩니다.2. 멜트다운의 특징 및 작동 원리특징:영향 받는 시스템: 주로 인텔 프로세서에서 발견되며, 다양.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 19. 하이퍼스레딩(Hyper-Threading)이란? 개념, 특징, 장단점, 그리고 실제 사례 1. 하이퍼스레딩(Hyper-Threading)이란?하이퍼스레딩(Hyper-Threading)은 인텔(Intel)에서 개발한 기술로, 물리적 CPU의 하나의 코어가 마치 두 개의 논리적 코어인 것처럼 동작하게 하여 CPU의 처리 성능을 향상시키는 기술입니다. 이를 통해 CPU는 더 많은 작업을 동시에 처리할 수 있으며, 멀티스레딩 환경에서 성능을 최적화할 수 있습니다.하이퍼스레딩은 단일 프로세서 내의 자원을 효율적으로 활용하여, 두 개의 스레드가 동시에 실행되는 것처럼 보이게 합니다. 이는 성능 향상을 가능하게 하며, 특히 멀티태스킹이나 멀티스레드 프로세싱이 중요한 애플리케이션에서 유리합니다.2. 하이퍼스레딩의 특징논리적 코어: 하이퍼스레딩은 물리적 코어 하나가 두 개의 논리적 코어로 동작하게 합니다.자.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 19. macOS에서 하드웨어 정보 확인하는 법 dmidecode는 시스템의 DMI (Desktop Management Interface) 테이블을 읽어 하드웨어 정보를 제공하는 유틸리티로, 리눅스 기반 시스템에서 흔히 사용됩니다. 이를 통해 BIOS 정보, CPU, 메모리, 시리얼 번호 등 시스템에 대한 세부 정보를 얻을 수 있습니다.그러나 macOS에는 dmidecode가 기본적으로 포함되어 있지 않습니다. dmidecode는 주로 리눅스 기반 시스템에서 작동하며, macOS에서 DMI 테이블을 읽을 수 없습니다. macOS는 리눅스와 시스템 관리 구조가 다르기 때문에 dmidecode를 사용할 수 없습니다.macOS에서 하드웨어 정보를 얻는 방법macOS에서 하드웨어 정보를 얻기 위한 명령어들은 다르게 제공됩니다. 대표적으로 다음과 같은 명령어들.. 프로그래밍공부(Programming Study)/운영체제(OS) 2024. 9. 19. mTLS란 무엇인가? Istio에서 mTLS 구성 방법과 보안 강화하기 1. mTLS란 무엇인가?mTLS(양방향 TLS, Mutual TLS)는 클라이언트와 서버 간의 통신에서 서로의 신원을 확인하는 인증 방식입니다. 일반적인 TLS(Transport Layer Security)는 서버의 신원을 클라이언트에게 인증하는 방식이지만, mTLS는 양쪽 모두의 신원을 인증합니다. 이 방식은 보안이 중요한 환경에서 더 안전한 통신을 보장합니다.mTLS는 클라이언트와 서버가 각자의 인증서를 교환하고 검증하는 과정을 거칩니다. 이를 통해 네트워크에 연결된 엔터티들 간의 신뢰할 수 있는 통신을 가능하게 합니다.2. mTLS의 특징과 장점특징:서버와 클라이언트 모두 인증: 클라이언트와 서버가 각각 인증서를 사용하여 상호 인증.암호화된 데이터 통신: 데이터는 암호화된 채로 전달되어 중간에서 .. 프로그래밍공부(Programming Study)/DevOps 2024. 9. 11. 이전 1 2 3 4 5 6 7 ··· 31 다음 728x90