전체 글 51

[Spring] @RestControllerAdvice을 사용해 기존의 예외 처리 방식 변경하기

여태까지 공부했던 내용을 응용하기 위해 기존에 진행했던 프로젝트인 큐터디 프로젝트에 대한 고도화 작업을 시작하게 되었다.고도화 작업을 위한 첫 번째 관문은 개별 예외 처리를 전역 예외 처리 방식으로 변경하는 것이었다. 이를 위해 Spring에서 제공하는 @RestControllerAdvice를 사용하게 되었으며, 이번 포스팅은 해당 과정을 정리한 글이다.  기존 예외 처리 방식 PostController@Slf4j@RequiredArgsConstructor@RestControllerpublic class PostController { private final PostsService postsService; private final AuthService authService; @PatchM..

Spring 2024.10.19

[Spring] 동시성 문제를 해결하는 방법

동시성 문제는 백엔드 개발에 있어 매우 중요한 문제 중 하나이다.백엔드 개발자는 동시성을 고려한 프로그래밍을 할 줄 알아야 한다.따라서 이번 장에서는 스프링과 자바를 사용하여간단한 예시를 통해 동시성 문제가 발생하는 경우에 대해 살펴보고이를 해결하는 3가지 방법에 대해 알아보도록 한다.  재고시스템 재고감소 로직 작성재고시스템의 간단한 재고감소 로직을 예시로 동시성 문제를 살펴볼 것이다. 해당 글은 동시성 문제에 대해 집중적으로 다루는 글이므로 코드에 대한 상세한 내용은 생략하고 설명을 진행한다. Stockpackage com.example.stock.domain;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;imp..

Spring 2024.09.19

[Infra] 실무에 필요한 인프라 용어 정리

이번에 좋은 기회로 멘토님과 함께 하루마다 10분 분량으로 기술에 대해 서로 정리하고 설명하는 시간을 갖게 되었다.이에 대한 첫 번째 글로 실무에 필요한 인프라 용어에 대해 간단히 정리하는 시간을 가져본다. 장비 데이터 센터데이터 센터는 각종 서버들이 모이는 공간이다  랙 (RACK)서버들이 꽂히는 공간으로 각종 시스템 장비들이 들어가서 시스템 구성에 필요한 환경을 만들어준다. 상면장비나 설비를 설치할 수 있는 공간이다. 랙보다 더 큰 개념으로 사용된다.  XaaS, 온프레미스, 온디맨드 XaaS (X as a Service)XaaS란 서비스형 시스템을 의미한다.클라우드 컴퓨팅 서비스 시스템 이용 시 사용자가 활용할 수 있게 제공되는 각종 IT 자원을 통칭하는 용어이다. IaaS (Infrastruct..

Infra 2024.09.19

[JPA] @CreatedDate, @LastModifiedDate가 적용되지 않는 문제

문제 상황@CreatedDate , @LastModifiedDate 어노테이션을 적용하였으나, 실제 db에 저장된 값을 확인해 보면, 값이 저장되지 않는 문제가 발생했다. 해결 방법Application 실행 부분에 @EnableJpaAuditing 어노테이션으로 Auditing 기능 활성화@SpringBootApplication@EnableJpaAuditingpublic class FitherApiApplication { public static void main(String[] args) { SpringApplication.run(FitherApiApplication.class, args); }}@CreatedDate , @LastModifiedDate 어노테이션을 사용하는 엔티티에서 @Ent..

Troubleshooting 2024.09.18

[Docker] 이미지(Image) 개념, 컨테이너(Container)와의 관계, 관련 명령어 정리 (3)

지난 글에서 컨테이너 가상화 기술을 사용하는 도커의 아키텍처에 대해 알아보고, 간단히 도커 컨테이너를 실행해 보았다. 이번 장에서는 도커 이미지에 대해 살펴보고, 관련 명령어에 대해 정리를 진행한다.  이미지 (Image)Docker 이미지는 컨테이너를 생성하는 데 사용된다.이미지는 파일 시스템(디렉터리)에서 특정 시점을 저장해 놓은 압축 파일이다. 소프트웨어뿐만 아니라 소프트웨어가 실행하기 위해서 필요한 모든 요소들을 준비해서 압축한다. 따라서 우리는 docker run [이미지명] 명령어만 실행하면 이미지를 다운 받아 격리된 공간에 컨테이너를 만들고, 컨테이너 내부에서프로그램을 실행할 수 있다. 이미지는 컨테이너를 사용하는 데 있어 가장 중요한 기능 중 하나이다. nginx 이미지처럼 다른 사람의..

Docker 2024.08.26

[IaC] Terraform을 사용해 EC2를 생성하고, 종료해보자

지난번 글에서 Terraform을 사용하기 위해 Terraform을 설치하는 방법에 대해 알아 보았다.이번 장에서는 Terraform을 사용하여 AWS EC2 인스턴스를 생성하고, 종료하는 방법에 대해 알아본다.  전제 조건그 전에, Terraform으로 EC2를 생성하기 위해서는 아래의 세 가지 조건이 필요하다.Terraform 1.2.0 이상의 버전이 설치되어 있어야 한다.AWS 계정과 계정에 대한 권한 자격 증명이 필요하다.AWS CLI가 설치되어 있어야 한다. 만약 해당 조건들이 설정되어 있지 않다면, 아래의 두 포스팅을 참고하면 된다. 2024.08.25 - [Infra/AWS] - [AWS] AWS CLI 설치 (Mac OS) [AWS] AWS CLI 설치 (Mac OS)AWS CLI(Comm..

Infra/IaC 2024.08.25

[IaC] Terraform 설치 (Mac OS)

이번 장에서는 Terraform을 사용하기에 앞서 Terraform을 설치하는 법에 대해 알아보도록 한다.(Mac OS를 기준으로 설명을 진행한다) Terraform이란?Terraform은 Hashicorp가 개발한 오픈 소스 코드형 인프라 도구이다(IaC). 즉, 코드를 사용해 인프라를 관리할 수 있다.Terraform을 사용하면 프로그래머가 인프라를 안전하고 효율적으로 구축, 변경 및 버전화할 수 있다.  Terraform 설치 Homebrew를 이용한 설치MacOS에서는 terraform을 Homebrew를 이용해 설치할 수 있다.brew tap hashicorp/tapbrew install hashicorp/tap/terraform 설치 확인최신 버전으로 업그레이드brew updatebrew up..

Infra/IaC 2024.08.25

[AWS] AWS CLI 설치 (Mac OS)

AWS CLI(Command Line Interface)AWS CLI는 터미널에 명령을 사용해 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구이다. 여러 개의 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화할 수 있다. AWS CLI 설치해당 글에서는 Mac OS를 기준으로 AWS CLI v2를 설치하는 방법에 대해 살펴보며, Homebrew가 이미 설치되어 있다고 가정하고 설명을 진행한다. Mac OS에서는 Homebrew를 사용해 간단하게 AWS CLI를 설치할 수 있다.brew install awscli // awscli 설치which aws // 설치 경로 확인-> /opt/homebrew/bin/awsaws --version // 설치 버전 확인-> aws-cli/2.17.32 ..

Infra/AWS 2024.08.25

[Docker] 도커 아키텍처와 컨테이너 실행 방법 (2)

지난번, 도커를 공부하기 위해 가상화 기술에 대한 개념에 대해 알아보았다.이번에는 컨테이너 가상화 기술을 사용하는 도커의 아키텍처와 컨테이너 실행 방법에 대해 살펴보도록 한다.  도커 (Docker) 도커는 컨테이너 가상화 기술을 사용하기 위한 도구로, 도커를 사용하면 커널의 컨테이너 가상화 기술을 사용자가 손쉽게 활용할 수 있다.  도커 아키텍처 도커와 같은 컨테이너 가상화 도구를 컨테이너 플랫폼이라고 부르며, 컨테이너 플랫폼은 컨테이너 엔진과 컨테이너 런타임을 자체적으로 가진다.컨테이너 엔진사용자의 요청을 받아 컨테이너를 관리컨테이너 런타임 직접 커널과 통신하며 격리된 공간 생성  클라이언트 - 서버 모델 도커는 클라이언트 - 서버 모델로 실행된다. 사용자의 명령을 전달해 주는 클라이언트와 실제로 컨..

Docker 2024.07.31

[Docker] 가상화 기술 개념 (1)

도커에 대해 정확한 이해를 하고 싶어 공부를 시작하게 되었는데, 먼저 도커에 대해 알기 위해선 가상화 기술의 개념에 대해 짚고 넘어가야 한다. 따라서 이에 대한 개념을 정리해 보도록 한다.  가상화 기술  가상실제로 존재하지 않지만 존재하는 것처럼 느껴지는 것 가상화 기술실제로 존재하는 컴퓨터는 아니지만 마치 컴퓨터가 있는 것처럼 만들어주는 기술가상화 기술을 사용하면 하나의 컴퓨터에서 여러 개의 컴퓨터를 실행시킬 수 있다.물리적인 환경에서 논리적인 컴퓨팅 환경을 만들 수 있는 기술 가상화 기술을 사용하는 이유다음처럼 CPU 8코어와 64GB 메모리인 서버 한 대를 갖고 있다고 가정하자. 컴퓨터에서 평균적으로 1코어와 8GB 메모리를 소모하는 A 프로그램을 4개 실행하면, 프로그램이 소모하는 총 리소스는 ..

Docker 2024.07.20