본문 바로가기

분류 전체보기152

Docker란? 컨테이너 기반 가상화 플랫폼의 핵심 이해 Docker는 애플리케이션을 컨테이너(Container) 단위로 실행하고 관리할 수 있는 오픈소스 플랫폼이다.마이크로서비스 아키텍처(MSA)나 DevOps, CI/CD 환경에서 활용도가 높으며, 동일한 실행 환경을 이미지로 패키징하여 언제 어디서든 실행할 수 있도록 한다. Docker의 핵심 개념 요약개념설명Docker란?컨테이너 단위로 애플리케이션을 실행 및 배포하는 플랫폼주요 구성요소Dockerfile, Image, Container, Docker Engine, Docker Hub특징계층별 분리, 이미지 기반 환경, 빠른 배포, 자원 효율성활용 사례MSA, DevOps, CI/CD, 테스트 환경, 경량화된 서비스 운영 등 Docker의 주요 특징1. 계층별 분리프론트엔드, 백엔드, 데이터베이스 등의 .. 2025. 5. 31.
컨테이너란? 개발자라면 꼭 알아야 할 기초 개념 컨테이너란?애플리케이션과 실행 환경, 필요한 모든 요소(라이브러리, 설정, 종속 항목 등)를 하나의 런타임 환경으로 패키징하여, 어디서든 일관된 실행 환경을 제공하는 기술애플리케이션과 종속 항복을 하나로 묶어 실행하게 해주는 운영 시스템을 가상화한 경량읭 격리된 프로세스쉽게 말해 프로그램과 그에 필요한 모든 것을 한 박스에 포장해서 어디서든 실행할 수 있게 해주는 기술특징경량화된 가상화 방식기존의 가상 머신(VM) 과 유사하나 컨테이너는 전체 운영체제를 포함하지 않음호스트 OS의 커널을 공유하므로 훨씬 가볍고 실행 속도 빠름개발한 최소한의 Image를 통해 실행되어 경량격리된 실행 환경하나의 시스템 내에서 여러 개의 컨테이너를 실행해도 서로 영향을 주지 않으며, 독립적으로 동작독립성을 갖기 때문에 다른 .. 2025. 5. 29.
JPA 조회 동작 방식 비교 : findById(), getOne(), getReferenceById() JPA 주요 조회 메서드는 아래와 같다. findById() getReferenceById() getOne() → 현재는 Deprecated된 메서드 아무 생각없이 쓰던 findById()와 다른 메서드는 어떤 차이를 가지는지 동작 방식과 구현 코드를 보며 비교해 보자. JpaRepository @Repository public interface BookRepository extends JpaRepository { } JPA를 사용하면 엔티티 단위로 위와 같이 JpaRepository를 상속 받은 Repository interface를 생성 위와 같이 JpaRepository 상속 받는 경우 기존에 구현된 기능을 그대로 사용할 수 있음 사용 가능 주요 메서드 S save(S entity) Iterable.. 2024. 3. 27.
DB 인덱스, 옵티마이저 인덱스 시간 복잡도 풀스캔 : O(n) 인덱스가 걸린 경우(B-tree 기반 인덱스) : O(logN) 인덱스 사용 이유 조건을 만족하는 튜플들을 빠르게 조회하기 위해 빠르게 정렬(order by)하거나 그룹핑(group by) 하기 위해 인덱스 생성 쿼리 전체 텍스트 인덱스 텍스트 형식의 데이터를 대상으로 하는 인덱스 주로 긴 텍스트 열에 대한 검색을 효율적으로 수행하기 위해 사용 전체 텍스트 검색 기능은 단순 문자열 일치를 넘어 단어 간의 일치도 고려 예) 블로그 게시말이나 제품 설명 같은 텍스트 데이터 검색 시 사용 공간 인덱스 지리 정보(Geometry 또는 Geography)를 포함하는 열에 대한 인덱스 주로 지리 정보 시스템(GIS)에서 사용되며, 지도 데이터나 위치 기반 서비스에서 지리적 위.. 2024. 3. 22.
2023년 개발 공부 회고(+ 자바 개발자 인프런 강의 추천) 2023년은 다른 년도에 비해 정말 공부를 많이 했던 해! 23년 하반기 전에도 개발 관련 책을 읽거나 인강을 듣기는 했지만 매일 공부하는 습관을 들이기 위해서 본격적으로 공부를 했던 한해로 2023년을 회고할 수 있다! 정리하다 보니 진짜 열심히 공부했구나! 2023년 개발 공부 회고 2023년 git 잔디 2023년 인프런 강의 수강 이력 개발자가 된지 5년이 다 되어 가고 있는데, 개발은 공부를 하면 할수록 더욱더 배울 것이 많아져서 정말 신기한 분야다. 자바 개발자로 실무를 하면서 스프링, JPA 관련해서 별도로 공부도 해야하고, 연차가 올라갈수록 도커, 네트워크, 인프라까지 공부해야 하고 할게 점점 더 늘어난다! 다들 왜 개발자는 평생 공부해야 하는 직업이라고 했는지 알겠다는... 기존 공부 스.. 2024. 1. 29.
책리뷰 - 객체지향의 사실과 오해(+ 요약) 자바 백엔드 개발자로 실무를 하다보면 객체지향에 대한 이야기를 가끔 듣게된다. 사실 변명이지만, 업무를 할때는 일정에 쫒겨 원칙이나 개념적인 것 보다는 구현에 더 집중할 수 밖에 없다. 그래서 객체지향을 자주 듣고 개념관련된 내용도 알고 있지만 자신있게 다른 사람에게 설명할 수 없는 정도의 지식을 가지고 있었던 것 같다. 근래에 서비스 설계를 하면서 좋은 설계에 대한 고민을 하다보니 근본적인 객체지향에 대한 궁금증이 생겼다. 나와 비슷한 고민을 가지고 있는 개발자들을 위해 객체 지향 관련한 서적 중 유명한 책인 '객체지향의 사실과 오해'를 읽고 서평을 써보고자 한다. 객체지향이라 하면 다들 Object-Oriented Programing (OOP)를 가장 많이 들어 봤을 것이다. 특히, 면접을 준비하는 .. 2024. 1. 7.
스프링 AOP 기본 개념 잡기! 스프링을 공부하고 서비스를 운영하다 보면 AOP를 적용해야 하는 경우가 생긴다. 핵심 기능은 아니지만, 핵심 기능을 보조하기 위한 부가 기능을 구현해야 하는 경우에 AOP를 사용하게 된다. 기존에 공부하고 사용했던 부분이긴 한데, 오랜만에 강의를 들으면서 공부하니, 정리해 놓으면 좋겠다 싶어서 기본 개념 정리를 해보려 한다. 만약 아래와 같은 고민을 하고 있다면 AOP에 대해 공부해 보면 좋다. 공통적으로 처리해야 하는 로직이 있는데, 중요 관심사는 아니다. 추가 기능을 적용해야할 메서드가 많다. 소스 코드에 핵심 로직이 아닌 불필요 로직이 섞여 있는것이 맘에 들지 않는다. 나는 아래와 같은 요구 사항이 있어서 AOP를 공부하고 실무에 적용한 적이 있다. 관리자 페이지에서 개인정보가 포함된 정보를조회하는.. 2024. 1. 3.
Spring boot 3.2.0 마이그레이션 가이드 (+끝 없는 오류 해결 방법!) 토이 프로젝트 백엔드 서비스의 스프링 부트 버전을 3.2.0 으로 업그레이드를 했다. 기존에 스프링 부트를 2.7 버전을 사용하고 있었기 때문에 버전을 변경하는게 간단할줄 알았는데 아니었다...! 아직 회사에서 사용하는 프로젝트들은 2 버전을 모두 사용하고 있기 때문에 버전을 업하는 경우 똑같은 오류를 볼 수밖에 없어서 이김에 정리하려고 한다. 그리고 생각보다 오류 관련해서 포스팅이 별로 없어서 생각보다 헤매면서 삽질을 했기 때문에 나와 같은 다른 개발자들에게 조금의 삽질이라도 덜어 줄 수 있기를! 스프링 부트 3.0 주요 변경 사항 Java EE에서 Jakarta EE API 로 마이그레이션 예시 - (기존) javax.servlet:javax.servlet-api > (변경) jakarta.servl.. 2023. 12. 21.
Java 파일 업로드, 다운로드 처리(+파일 사이즈 제한 세팅 방법) 프로그램을 개발하다 보면 파일 업로드, 다운로드 처리하는 경우가 다수 있다. 간단하게 게시판을 만들더라도, 첨부파일을 올리거나 이미지를 올릴 수 있게 하는 기능을 기본적으로 구현한다. 웹 서비스에서 파일 업로드 게시판 서비스를 제공한다면, 게시글을 작성할 때 파일만 업로드하는게 아니라 글을 작성하고 파일도 함께 첨부하게 된다. 이런 경우 일반 데이터는 텍스트로 전달하고 첨부파일은 바이너리 데이터로 전송해야 한다.(파일 업로드 시 파일 데이터는 바이너리 데이터로 전송) HTTP로 데이터 전송 시 entype을 multipart/form-data 전송하면 각각의 항목이 Part로 구분해서 한번에 전달이 된다. Form 태그로 전송 시 아래와 같이 써야 한다. enctype="multipart/form-dat.. 2023. 12. 17.
반응형