| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
- 해시맵
- 개발자
- bfs
- 주니어
- HTTP
- spring boot
- Linux
- 인텔리제이
- 자료구조
- 구름LEVEL
- 스타트업
- 해결
- dfs
- 도커
- 스프링 부트
- 스프링부트
- 코딩테스트
- 프로그래머스
- 스프링
- Java
- spring
- IntelliJ
- 인프라
- 백엔드
- 배열
- 이직
- HashMap
- 문자열
- 구현
- docker
- Today
- Total
목록전체 글 (127)
마이의 개발 블로그
배경최근 맞춤법 검사기 라이브러리 WebSpeller의 사용을 주 기능으로 하는 SpringBoot 서버를 Docker 기반 서비스로 배포하는 과정에서, 서버 어플리케이션이 멀티코어 CPU를 제대로 활용하지 못하는 문제가 발생했습니다. 호스트 PC에서 직접 구동하는 경우 CPU 활용률과 처리 속도에 문제가 없었으나, 도커 이미지 빌드 후 컨테이너에서 동작시킬 경우 같은 CPU 활용률이더라도 처리속도가 떨어지는 현상이 관찰된 것입니다. 오늘은 문제를 해결하나가며 얻게된지식들을 정리해보려고 합니다.문제 해결 과정기존 검증 내용 체크초기에는 클라우드 서버의 CPU 단일 코어 성능이 로컬 PC보다 낮아서 성능이 제한된 것이라고 단순히 생각했습니다. 그러나 다양한 각도에서 문제를 분석하며 아래와 같은 내용들을 확..
배경웹 서버를 운영할 때 흔히 간과하는 보안 요소 중 하나가 서버 버전 정보입니다. 서버 정보를 그대로 노출하면 공격자에게 필요한 정보를 제공하여 보안이 위협받는 위험한 상황이 발생할 수 있는데, 그래서인지 현업에서는 정부 기관 솔루션 납품, 대기업 사내 시스템 구축 등 프로젝트 성격을 불문하고 보안성 심사 지적사항으로 항상 서버정보 노출을 막아달라는 요청이 발생합니다. 오늘은 서버 정보가 노출되었을 때 발생할 수 있는 여러 가지 취약점들에 대해 알아보고 주요 웹 서버중 하나인 Nginx에서의 서버 버전 정보 미노출 처리 방법을 알아보려고 합니다.서버 버전 정보 노출이 위험한 이유1. 서버 버전에 따른 취약점이 곧바로 노출되어 공격 대상이 됨서버 버전이 노출되면 공격자는 해당 버전에서 보고된 취약점을 활..
배경: 서브프로세스의 도입AI 기반 영상 분석 시스템을 개발하며, 1) CCTV RTSP 스트리밍 영상의 분할 저장, 2) 저장된 파일들에 대한 후처리 스케줄러 구동을 안정적으로 처리해야 할 필요가 있었습니다. 초기에는 모든 작업을 단일 프로세스 내에서 처리하여 개발을 진행했습니다. 그러나 단일 프로세스 내에서 Gstream을 통한 스트리밍 행위와 파일 분할 저장 행위를 동시에 수행하는 경우, 주기적으로 프로세스에 부하가 많이 걸리게 되어 그 시점마다 아래와 같은 현상들이 발생했습니다. - 영상 저장 타이밍이 어긋남- 저장 중인 파일이 일부 유실됨- 타임스탬프 기반 파일 관리의 불안정성 증가 이러한 문제들을 해결하기 위해 저는 1), 2)의 기능들을 각각 별도의 서브프로세스로 분리하여 운영하는 구조를 도..
배경도커를 사용해 이미지를 빌드하다보면 "내 작고 소중한 프로그램에 비해 이미지 용량이 왜이렇게 크지?"라는 의문을 품는 경우가 발생합니다. 분명 내 프로그램은 'Hello, World' 출력 하나 해줄 뿐인데, 이미지 용량이 1GB를 가뿐히 넘긴다는 건 용납하기 어렵죠. 이럴 때 멀티스테이지 빌드를 활용하면 용량 최적화뿐만 아니라 다양한 이점을 가져갈 수 있는데요. 오늘은 멀티스테이지 빌드를 하는 방법과 멀티스테이지 빌드가 왜 필요한지에 대해 알아보도록 하겠습니다.멀티스테이지 빌드(multi-stage build)란?이름대로 빌드를 여러 단계로 나누어 하는 빌드 방식을 말합니다. 아래는 기본적인 도커 빌드 예시인데요:FROM openjdk:21-ea-jdk-slimWORKDIR ...COPY ...RU..
배경최근 진행하는 프로젝트 요구사항에 맞춰 빌드 방식을 gradle -> maven으로 전환 후 전체 디렉토리 구조를 손봐야하는 일이 있었습니다. 이 과정에서 .gradle 폴더의 삭제도 필요했는데, 디렉토리를 삭제하더라도 git에서 변화사항을 감지하지 못하는 현상이 발견되었습니다. 알고보니 git은 파일의 변화가 없으면 디렉토리의 변화를 별도로 감지하지 않는데 이를 위해서는 강제로 변화를 감지하게 해야합니다. 이번 포스트에서는 그 방법을 소개하고자 합니다.방법1. 디렉토리 삭제macOS / Linuxrm -rf .gradleWindowsrmdir /s /q .gradle2. Git에서 강제로 변화 감지 후 커밋하기git add -Agit commit -m "Remove .gradle folder"Not..