[Python/Docker] Python Docker 이미지에서 취약점 제거하기 (python:3.9.12-slim 기반)
·
개발 (Development)/Python
Docker로 Python 애플리케이션을 배포할 때, 보안 취약점(CVE)이 포함된 이미지가 생성되는 경우가 종종 있습니다. 특히 python:3.9.12-slim 이미지를 사용할 경우, 다음과 같은 치명적인 취약점들이 감지될 수 있습니다:OpenSSL, zlib, expat, pcre2, kerberos, libtasn1 등 주요 시스템 패키지 관련 CVE대표적으로 CVE-2022-2068, CVE-2022-1586, CVE-2024-45491 등이번 글에서는 해당 취약점들을 제거하기 위한 이미지 최적화 방법을 정리해 보았습니다.사용 환경베이스 이미지: python:3.9.12-slim빌드 플랫폼: linux/amd64취약점 검사 도구: docker scan, Trivy대상 취약점: CRITICAL 등..
[Java] Interface란? 클래스와 다른 점은?
·
개발 (Development)/Java
Java를 공부하다 보면 interface라는 개념이 등장합니다. 처음에는 추상 클래스와 비슷하게 느껴질 수 있지만, 인터페이스는 Java에서 매우 중요한 설계 도구입니다. 이번 글에서는 interface의 정의부터 사용 예시, 특징까지 정리해 보겠습니다.1. 인터페이스란 무엇인가요?Java에서 interface는 클래스가 구현해야 할 메서드의 목록을 명세한 일종의 규격서입니다. 실제 동작(구현)은 포함하지 않고, 메서드 이름과 매개변수 등 구조만 정의합니다. 클래스가 이 인터페이스를 implements로 구현하면, 반드시 해당 메서드들을 정의해야 합니다.public interface Animal { void sound();}Animal 인터페이스를 구현하는 클래스는 sound() 메서드를 반드시 ..
[Java] MyBatis와 JPA 속도 비교: 어떤 상황에 어떤 선택이 더 나을까?
·
개발 (Development)/Java
Java 백엔드 개발에서 가장 많이 사용되는 ORM 프레임워크인 JPA와, SQL 매핑 프레임워크인 MyBatis는 각기 다른 장점을 지니고 있습니다. 저 역시 프로젝트를 진행하면서 "어떤 상황에 어떤 것이 더 빠를까?"라는 질문을 갖고 두 프레임워크를 비교해 보게 되었습니다.이번 글에서는 MyBatis와 JPA의 속도와 성능 측면에서의 차이를 중심으로, 실제 사용 시 고려할 점들을 정리해보았습니다.1. MyBatis와 JPA는 어떤 프레임워크인가요?MyBatis는 SQL을 직접 작성하여 사용하는 SQL 매퍼 프레임워크입니다. 개발자가 SQL을 전적으로 통제할 수 있어 성능 최적화에 유리합니다.JPA는 객체지향 프로그래밍과 데이터베이스를 매핑하는 ORM 프레임워크입니다. SQL 작성을 최소화하고 생산성을..
[Kafka/Docker] Kafka 컨테이너에서 특정 Key의 메시지 500개 추출 및 저장하는 방법
·
개발 (Development)/Kafka
Kafka를 사용할 때 특정 key를 가진 메시지만 추출해 확인하거나 저장해야 하는 상황이 종종 발생합니다. 특히 Docker 컨테이너 환경에서 Kafka가 실행 중일 경우, 터미널 명령어만으로 이 작업을 효율적으로 처리할 수 있습니다. 이 글에서는 Kafka 컨테이너에 접속해 특정 key를 가진 메시지를 최대 500개까지 추출하고 파일로 저장하는 과정을 정리합니다.1. Kafka 컨테이너 접속Kafka가 Docker 컨테이너로 실행 중이라면 다음 명령어로 컨테이너에 접속합니다.docker exec -it kafka-container-name bashkafka-container-name은 실제 사용 중인 Kafka 컨테이너 이름으로 바꿔야 합니다.2. kafka-console-consumer로 메시지 추..
[Java] MyBatis만 쓰던 내가 JPA를 처음 접했을 때 이해한 구조 정리
·
개발 (Development)/Java
Spring Boot 프로젝트를 진행하면서 그동안은 MyBatis로만 데이터베이스를 다뤄왔습니다. 하지만 이번 프로젝트에서는 JPA를 사용하게 되었고, 처음에는 다소 생소한 개념들이 많았지만 구조를 하나하나 정리하면서 점차 이해할 수 있었습니다. 이 글에서는 MyBatis만 사용해본 입장에서 JPA의 전체 구조를 어떻게 이해했는지 순서대로 정리해보겠습니다.JPA와 MyBatis의 가장 큰 차이점MyBatis는 SQL 중심의 프레임워크입니다. XML이나 어노테이션을 통해 SQL을 직접 작성하고, 그 결과를 Java 객체에 매핑합니다. 반면, JPA는 객체 중심으로 동작합니다. SQL은 자동으로 생성되며, 객체와 객체 사이의 관계를 바탕으로 데이터베이스와 소통합니다.즉, MyBatis는 "어떤 쿼리를 실행할..