docker 5

Tomcat, Netty의 쓰레드 덤프 분석을 통해 병목 지점을 분석해보자 - Prometheus,Grafana를 통한 시각화 모니터링

자바 쓰레드의 상태(Thread State)상태 전이에 대해 간략하게 설명하기 전에 종류나 알고 가자NEW : 쓰레드가 생성되었으나 아직 시작되지 않은 상태 (아직 OS 쓰레드는 존재하지 않는 상태)Thread.start()를 호출해야 OS에서 실제로 쓰레드를 생성RUNNABLE : 쓰레드가 실행 가능하여 OS의 리소스를 기다리거나 JVM 안에서 실행중인 상태OS 스케줄러의 실행 대기열에 포함되었다가 차례로 CPU에서 실행된다.BLOCKED : 쓰레드가 동기화 락을 기다리며 Block된 상태WAITING : 무한정 대기중인 쓰레드 (CPU 입장에서 Waiting과 Blocked는 동일)TIMED_WAITING : 쓰레드가 지정된 시간동안 대기TERMINATED : 실행 완료되었거나 예외가 발생하여 종료된..

backend 2025.02.24

Windows In Docker - C++ 프로젝트의 컨테이너화 빌드 및 관리

Windows 환경의 C++ 프로젝트의 컨테이너 이미지 관리혹자는 Linux 환경에서 C++ 빌드도 되는데, 그냥 리눅스로 도커 이미지 빌드하면 안되냐고 할 것이다. 하지만 제목에서 말해주듯 IOCP 게임서버에 관한 내용으로, IO Completion Port는 윈도우 OS의 커널 오브젝트이다.Overlapped IO를 통해 OS에 종속될 수 밖에 없는 Proactor 비동기 기술의 비애라고 볼 수 있겠다. 어쩔 수 없이 Windows 플랫폼을 고집해야하는 상황이고, k8s 환경에서 다른 마이크로서비스들과 함께 관리하기 위해서라도 컨테이너화 빌드도 필요한 상황이다.  핵심 : Visual Studio 빌드 시스템 사용 (.vcsproj 프로젝트 파일) FROM mcr.microsoft.com/window..

windows 2025.02.20

Github Action으로 시작하는 GitOps 파이프라인(AWS ECR, Github Actions)

Github Actions이 뭘까?CI/CD와 같은 workflow를 자동화 할 수 있는 도구로, 2018년부터 깃허브에서 제공하는 서비스.​깃허브를 통해서 버전 관리나 협업하는 이상, 깃허브 내의 이벤트(push,pull,merge ...) 의 발생에 대해 정해진 동작을 실행해주는 Actions 기능은 Jenkins같은 CI 툴만큼이나 편리할 수 밖에 없다. Public 레포지토리는 제한있는 무료로 사용 가능함.​Github CLI를 사용하면 Repository를 push하지 않더라도 Branch의 Actions들을 실행하고 필요한 정보를 넘겨줄 수 있다.​​​들어가기에 앞서서, 알아둬야할 핵심적인 개념을 소개하겠음 Github Actions의 구성1. WorkflowEvent를 트리거로 여러 Job으..

backend 2024.11.19

Docker 데몬 없이 컨테이너 이미지 빌드(kubernetes Docker 지원 중단)

컨테이너화는 애플리케이션 배포의 필수적인 요소로 자리잡았고, Docker로 대표되는 가장 인기 있는 기술이다.​다른 k8s 문제에 대해 트러블 슈팅중에 뒤지다가 검색 키워드로 떠서 좀 찾아봤다.​kubernetes is deprecating Docker...네?kubernetes에서 docker 지원을 중단하려고 한다는 아티클을 발견해서 허겁지겁 들어가서 탐독했다.​​휴 다들 진정해 사격중지​아래 링크는 k8s 공식 문서에서 제공하는 번역본이다.https://kubernetes.io/ko/blog/2020/12/02/dont-panic-kubernetes-and-docker/​ 웃긴게, 하도 논란되니까 해명하는거 같은 내용이다.​k8s은 v1.20 이후 컨테이너 런타임(CRI)으로서 도커를 사용 중단(d..

backend 2024.11.19

Docker 컨테이너 패키징과 이미지 최적화의 이해

로컬의 경우 ARM, x86 68bit 두 가지 환경이 있다.서버 환경도 보통 후자인데 크로스 플랫폼으로 빌드하지 않는 이상, 최신 버전의 맥북은 빌드시 ARM 으로 된다.​서비스 배포시 우리는 어떤 환경에서던 동일한 Dockerfile을 작성해서 컨테이너 이미지를 빌드한다.​어떻게 동일한 컨테이너 이미지를 이용해서 Docker와 kubernetes에서 이용 가능할까? 이에 대해 알려면 Docker에 대한 살짝 더 깊은 이해가 요구된다.​​​OCI(Open Container Initiative) : 저수준 컨테이너 런타임OCI 이미지 스펙을 가진 컨테이너 이미지는 OCI 런타임에서 구동 가능실제 실행할려면 isolation된 환경이 필요한데, 관련된 리눅스 기술을 관리하는 레이어Linux 운영체제의 커널..

backend 2024.11.17