분류 전체보기
[SpringBoot] Prometheus, Grafana를 이용한 모니터링
[SpringBoot] Prometheus, Grafana를 이용한 모니터링
2024.12.10애플리케이션의 메트릭과 상태를 모니터링하는 것은 애플리케이션의 성능을 개선하고, 보다 나은 관리를 가녕하게 하며, 최적화되지 않은 동작을 발견하는데 큰 도움이 됩니다.이번 포스팅에서는 데이터 메트릭을 수집하는 `Prometheus`, 이를 시각화 하는 `Grafana`를 활용하여 `SpringBoot`에서 모니터링 환경을 구축하는 방법에 대해 알아보겠습니다. Prometheus`Prometheus`는 애플리케이션 트래픽에 대한 데이터를 수집합니다. 이를 통해 `CPU 사용량`, `메모리 사용률`, `요청 수`, `응답 시간` 등의 애플리케이션 성능 데이터를 추적할 수 있습니다.애플리케이션의 `/actuator/prometheus` 엔드포인트를 통해 이러한 메트릭 데이터를 확인할 수 있으며, `Promet..
GitHub Actions(CI/CD), AWS S3, CodeDeploy 지속적 통합, 배포 자동화
GitHub Actions(CI/CD), AWS S3, CodeDeploy 지속적 통합, 배포 자동화
2024.12.02이전 포스팅에서 AWS EC2, RDS`MySQL`, ElastiCache`Redis`를 활용하여 배포 인프라를 형성하고 cli환경에서 직접 배포작업까지 완료하였습니다. [AWS] EC2, RDS, ElastiCache 인스턴스 생성부터 배포까지애플리케이션의 안정성과 확장성을 확보하기 위해 클라우드 서비스를 활용하고 있습니다. AWS`Amazon Web Services`는 그중에서도 가장 널리 사용되는 클라우드 플랫폼으로, 강력하고 유연한 인프라tao-tech.tistory.com이번 포스팅에서는 AWS 인프라 형성한 것을 기반으로 AWS S3, CodeDeploy, GitHub Actions`CI/CD`를 활용하여 `지속적 통합`, `배포 자동화`의 개념과 구현까지 알아보도록 하겠습니다.개발 환경운영체..
[AWS] EC2, RDS, ElastiCache 인스턴스 생성부터 배포까지
[AWS] EC2, RDS, ElastiCache 인스턴스 생성부터 배포까지
2024.11.28애플리케이션의 안정성과 확장성을 확보하기 위해 클라우드 서비스를 활용하고 있습니다. AWS`Amazon Web Services`는 그중에서도 가장 널리 사용되는 클라우드 플랫폼으로, 강력하고 유연한 인프라를 제공합니다. 이번 포스팅에서는 AWS의 대표적인 서비스인 `EC2`, `RDS(MySQL)`, `ElastiCache(Redis)`를 활용하여 애플리케이션을 배포하는 과정에 대해 알아보도록 하겠습니다. 인스턴스 생성 전 공통 적용 사항입니다.모든 인스턴스 생성은 `프리티어`로 진행합니다.AWS 사이트에 접속 후 로그인 한 뒤 `우측 상단`에 위치한 리전을 서울로 설정합니다. 1. EC2EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스입니다.이 서비스를 통해 아마존이 각 세계에 구축한 데이터 센터의 ..
[Spring] Redis를 사용한Session 로그인 구현, Security없이 인증, 인가 구현
[Spring] Redis를 사용한Session 로그인 구현, Security없이 인증, 인가 구현
2024.11.14애플리케이션의 인증과 인가는 사용자와 시스템 간의 신뢰를 형성하는 중요한 요소이며, 이를 통해 사용자의 신원 확인 및 접근 권한을 관리함으로써 보안성을 높일 수 있습니다.이번 포스팅에서는 `Session과 Redis`의 개념을 간단히 살펴본 후, `Redis를 세션 스토리지로 사용하는 로그인 구현`과 Spring Security 없이 `Custom Annotation을 통한 인증/인가`를 구현하는 방법을 알아보겠습니다. Session 이란? Session이란, 클라이언트와 서버 간의 상태를 유지하기 위한 방법으로, 사용자가 로그인하여 인증된 후 해당 사용자의 정보를 일정 기간 동안 서버가 기억할 수 있도록 합니다.HTTP는 기본적으로 비상태성`stateless`을 지니고 있어, 각 요청은 서로 독립적입니..
인증, 인가 세션(Session)과 토큰(Token)의 장단점과 차이점
인증, 인가 세션(Session)과 토큰(Token)의 장단점과 차이점
2024.11.04서비스 환경에서 개인정보와 중요한 데이터를 보호하는 일은 무엇보다 중요하며, 사용자 경험`UX`을 저해하지 않는 효율적인 인증 체계가 필수적입니다.이번 포스팅에서는 인증과 인가를 다루는 세션`Session`과 토큰`Token` 두 가지 방식의 개념과 차이점, 그리고 각 방식의 장단점에 대해 알아보도록 하겠습니다. 세션과 토큰에 대해 알아보기 전 인증`Authentication`과 인가`Authorization`, 그리고 HTTP의 비상태성`Stateless`에 대해 간단히 알아보도록 하겠습니다. 인증 (Authentication)인증 (Authentication)은 사용자의 신원을 확인하는 과정으로 즉, 누구인지 확인하는 절차입니다.쉽게말해 저희가 알고있는 `로그인`에 해당됩니다. 인증은 일반적으로 사..
[Spring] offset, no offset 차이점과 페이지네이션 구현예제
[Spring] offset, no offset 차이점과 페이지네이션 구현예제
2024.10.23웹 서비스에서 페이지네이션은 흔하게 사용되는 기능 중 하나입니다.데이터를 효율적으로 조회하기 위해 많은 서비스에서 이 기능을 적용하고 있습니다. 데이터 조회에 대한 기능을 구현하며 페이지네이션 방식 중 offset과 no offset 방식의 페이지네이션에 대해 알게 되었고 이 두 가지 방식의 차이점과 각 방식에 대한 사용성에 대해 정리하고자 합니다. 이번 포스팅에서는 페이지네이션 기능 중 일반적으로 사용되는 `offset`과 `no offset`의 차이점과 각 기능의 장단점, 성능차이에 대해 알아보도록 하겠습니다.offset 이란?페이지네이션의 offset 방식은 주어진 페이지 번호(offset)에 따라 데이터를 조회하는 방법입니다.이 방식은 SQL 쿼리에서 LIMIT와 OFFSET을 사용하여 데이터를 ..
[Spring] RequestBody, Response의 값이 null 일 때, JSON의 직렬화 역직렬화
[Spring] RequestBody, Response의 값이 null 일 때, JSON의 직렬화 역직렬화
2024.10.10데이터 생성, 수정 등을 Postman을 통해 테스트하던 중 Request와 Response과정에서 에러가 발생하였습니다. Request Error`SQLIntegrityConstraintViolationException` Response Error`HttpMediaTypeNotAcceptableException`Request, Response 두 에러가 발생하였는데 에러내용으로 확인했을 때 많은 이유가 존재하지만 필자의 경우 결국 직렬화, 역직렬화 과정에서 null 값으로 처리되어 발생한 에러였습니다. 이번 포스팅에서는 에러가 발생한 원인인 null 값으로 처리되는 이유와 해결방법에 대해 알아보겠습니다. 우선 null 값으로 처리되는 이유와 해결방법에 대해 알아보기 전, JSON과 직렬화, 역직렬화에 ..
Entity에 Setter사용을 지양하는 이유 feat.DTO, Entity 간 변환
Entity에 Setter사용을 지양하는 이유 feat.DTO, Entity 간 변환
2024.09.26JPA학습을 하다 보면 한 번쯤은 Entity에 Setter사용을 지양하자 라는 내용을 들어보았을 것입니다.이번 포스팅에서는 Entity에 Setter사용을 지양하는 이유와 Setter를 사용하지 않고 데이터 저장 및 수정, DTO, Entity 간 변환에 대하여 알아보겠습니다. Entity에 Setter사용을 지양하는 이유Entity의 경우 비즈니스 로직이 존재하고 실제 데이터가 변경되는데 그 과정에서 Setter를 사용하여 값을 설정할 경우 몇 가지 불리한 점이 존재합니다. 사용자의 의도파악이 불분명하다Member member = new Member();member.setEmail("tao@exemple.com");member.setName("오팔봉");Setter를 사용해 값을 설정할 경우 생성하..
[JPA]SpringDataJPA 공통 필드 BaseEntity로 관리하기, Auditing으로 시간관리하기
[JPA]SpringDataJPA 공통 필드 BaseEntity로 관리하기, Auditing으로 시간관리하기
2024.09.24다양한 엔티티를 생성하여 사용하다 보면 엔티티 생성마다 중복되는 필드(id, createdAt, updatedAt 등)를 반복적으로 계속 생성해 줘야 하는 걸까?라는 의문이 들곤 합니다.이번 포스팅에서는 엔티티 생성시 중복되는 필드를 BaseEntity를 활용하여 관리하는 방법에 대해 알아보겠습니다.BaseEntity 생성@Getter@MappedSuperclasspublic class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @CreationTimestamp @Column(name = "created_at", nullable = false, updatable = f..
CSR과 SSR의 개념과 차이점 (feat. SPA, MPA)
CSR과 SSR의 개념과 차이점 (feat. SPA, MPA)
2024.09.11CSR과 SSR의 개념과 차이점을 알아보기 전 SPA와 MPA의 개념과 차이점에 대해 먼저 알아보도록 하겠습니다. SPA(Single Page Application) 개념한 개(Single)의 Page로 구성된 ApplicationCSR(Client Side Rendering) 방식으로 렌더링서버로부터 완전한 새로운 페이지를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 애플리케이션 또는 웹 사이트Angular, React, Vue 등 프레임워크로 만든 홈페이지들이 대부분 SPA에 해당 작동 방식SPA는 웹 애플리케이션에 필요한 모든 정적 리소스(HTML, CSS, JavaScript)를 단 한 번만 로딩이후 추가적인 요청 시 페이지 갱신에 필요한 API를 JSON으로 전..
[Docker] Docker Compose로 MySQL 개발환경 설정하기
[Docker] Docker Compose로 MySQL 개발환경 설정하기
2024.09.05로컬 환경MacOSDocker 27.1.1Docker Compose v2.29.1DB IDE: DataGrip docker-composedocker-compose는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의하여 컨테이너를 묶음으로 관리할 수 있는 개발 환경을 제공하는 관리도구 입니다. docekr-compose를 사용하는 이유yaml파일로 애플리케이션의 서비스를 구성하여 팀원에게 동일한 개발환경을 제공하나의 애플리케이션에 필요한 여러 서비스를 하나의 서비스로 정리하여 컨테이너를 묶음으로 관리각 컨테이너의 의존성, 네트워크, 볼륨 등을 함께 정의 docker-compose로 MySQL 구성하기버전 확인docekr-compose --version먼저 버전을 확인하여 설치 유무를 체크합니다...
REST API, RESTful API란?
REST API, RESTful API란?
2024.08.30APIAPI(Application Programing Interface)Application: 고유한 기능을 가진 모든 소프트웨어를 나타냅니다.Programing: 컴퓨터가 작업을 수행하기 위해 따를 수 있는 프로그램이라는 명령어 순차 조합을 구성하는 것을 말합니다.Interface: 두 애플리케이션 간의 서비스 상호작용을 나타냅니다. 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다.정리하자면 컴퓨터의 기능을 실행, 어떠한 응용프로그램에서 데이터를 주고받기 위한 방법을 의미합니다. RESTREST(Representational State Transfer)Representational: 자원의 표현State: 웹 애플리케이션의 상태Transfer: 이 상태의 전송자원의 표현에 의한..