전체 글 6

운영 서버와 모니터링 서버 구축(엑추에이터, 프로메테우스, 그라파나)

🔫 시작하기 인프런 워밍업 클럽 2기를 마치고 수료식에서 네트워킹을 하면서 박우빈님이 해주신 말이 생각나 적용하게 되었습니다.단순 개발은 누구나 할 수 있지만 이를 유지보수하는데 실력 차이가 드러난다고 했습니다.그래서 단순 개발을 떠나 장애 대응, 성능 개선 등에 대한 고민이 필요하다고 생각하여 성능 테스트에서 지표를 확인하는 용도로 모니터링에 대한 구성을 적어 봅니다.원리와 개념보다는 서버에서 구성하여 테스트하기 위함과 구현에 있어 작성했습니다. 물론 보안 문제에 대한 고려를 일부 배제한 점은 참고해 주세요.자료는 하단 참고에서 사용했습니다.   🆘 구조 다음과 같은 구조로 설계했습니다.(그림 출처는 참조 자료) 엑추에이터의 접근을 허용하면 외부에서 애플리케이션의 중요 정보를 노출할 수 있기에 포트..

서버 2024.11.06

스프링 테스트 통합해서 비용 줄이기(통합 테스트)

‘인프런 - Practical Testing: 실용적인 테스트 가이드’ 강의를 참고했습니다. (개인적으로 아주 좋았습니다 👍)작성된 일부 테스트를 통해 예시를 드니 여러 상황에 구체적인 예시 코드가 없는 것과 일부 상황 가정에 대해 감안해주시면 감사합니다. 테스트 통합 이전 상황현재 3 tier architecture인 Presentation layer ↔ Business layer ↔ Persistence layer 구조에 대해 테스트를 수행했습니다.각 controller, service, repository는 기능 수행에 있어 여러 빈들 간 상호 작용이 필요하다. 그렇기에 테스트에서도 특정 빈들이 담긴 스프링 컨텍스트를 가져와 통합 테스트를 진행했습니다. 하지만 전체 테스트를 진행하니 통합 테스트 ..

spring 2024.07.09

EC2에서 Google Text-To-Speech 설정 + Docker 사용

프로젝트를 진행하면서 텍스트에 대한 음성 파일도 제공하기 위해 google TTS API를 사용하기로 했습니다.로컬 PC에서는 찾은 정보로 어렵지 않게 구현할 수 있었습니다. 그런데 개발 서버 EC2에도 적용하기 위해 설정하면서 문제가 발생했습니다  EC2에서 google cloud의 TTS API 사용 문제 발생실제 개발 서버인 EC2에서도 해당 API를 사용하기 위한 설정을 하는 도중 문제가 발생했다.  gcloud init 실패  EC2 amazon linux2 를 사용했는데 참고로 기본 설정이 python2.7.X로 되어 있다.문서를 보면 python3.8 이상 버전에서만 사용 가능하다고 한다. 높은 버전의 파이썬을 설치해도 기본 설정으로 적용되지 않았는데 알고 보니 설치된 파이썬이 적용되지 않았..

서버 2024.04.22

JWT란?

JWT(Json Web Token)문서에 따르면 JWT는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준이라고 한다. session과 같이 인가에 필요한 요소이다.JWT의 구성 요소는 header, payload, signature 이루어져 있으며 ‘.’을 기점으로 나눠져 있다.디코딩된 JWT는 오른쪽과 같은 구조를 지닌다.  header header는 일반적으로  토큰 유형(JWT)과 사용되는 서명 알고리즘(예: HMAC SHA256 또는 RSA)의 두 부분으로 구성된다.alg 는 사용되는 암호화할 서명 알고리즘으로 보통 HS256을 사용하며 RSA도 사용할 수 있다고 한다.HS256**(HMAC with SHA-256)**은 header와 pa..

IT 지식 2024.02.22

스프링 핵심 원리 - 기본

인프런 김영한 강의와 자료를 토대로 부분적으로 요약했단 점 참고바랍니다. 앞 글에서 좋은 객체 지향 설계의 원칙 5가지(SOLID)를 지키기 위해 역할(인터페이스)과 구현(클래스)을 분리했다. 그렇지만 구현체를 바꿀 때 마다 코드 수정으로 인해 OCP 위반과 구현체(클래스)에 의존하므로 DIP 위반을 일어난다. DIP를 지키기 위해 위 처럼 코드를 변경한다 하더라도 구현체가 없으므로 NPEE(null pointer exception)가 발생한다. 이 문제를 해결하기 위해 관심사를 분리한다. 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스(AppConfig)를 만들면 생성자를 통해 주입해줘 OCP와 DIP를 지킬 수 있다. IoC, DI, 컨테이너 제어의 역전 IoC(Inversion o..

spring 2023.03.06

객체 지향 설계와 스프링

스프링이란? 스프링 생태계 스프링은 무엇일까? • 스프링이라는 단어는 문맥에 따라 다르게 사용된다. • 스프링 DI 컨테이너 기술 • 스프링 프레임워크 • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 중요한 것은 스프링이 만들어진 이유이다. 웹 어플리케이션 생성과 DB 접근을 편리하게 해주고 웹 서버를 자동으로 띄워주기도 한다. 여러 가지가 있지만 핵심은 스프링이 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크인 것이다. • 스프링은 자바 언어 기반의 프레임워크 • 자바 언어의 가장 큰 특징 - 객체 지향 언어 • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체..

spring 2023.03.05