Spring 기초(41)
-
Spring Batch Job Parameter 사용하기
Intro 이번 포스팅에서는 Spring Batch가 지원하는 Job Parameter에 대해 다룹니다. 간단한 사용법과 Spring Batch가 Job Paramter를 재사용하는 문제에 대해서도 다룹니다. 잘못된 부분은 언제든지 말씀해주세요 ~ 1. Job Parameter란 말 그대로, Batch Job을 실행할 때 외부/내부에서 주입받아 Batch 컴포넌트 내에서 사용할 수 있는 파라미터입니다. 코드의 배포 없이 Chunk Size를 변경하고 싶다거나, 엊그제 고장나서 실행이 안된 Batch를 다시 돌리고 싶을 때 사용할 수 있습니다. 첫번째의 경우 Chunk Size를 파라미터로 주입받고, 두번째의 경우 실행 기준 날짜를 파라미터로 주입받으면 되는 것이죠~ 2-1. Job Parameter 사용..
2023.12.04 -
SpringBoot + GraphQL (2/2)
들어가며 이번 포스팅에서는 SpringBoot 환경에서 GraphQL을 간단히 실습해봅니다. GraphQL에 대한 소개와 설명은 이전 포스팅을 참고해주세요. Spring에서 공식적으로 Spring for GraphQL을 Release했습니다. 다만, Spring for GraphQL을 사용하시려면 SpringBoot 버전을 2.7 이상으로 맞춰주셔야 합니다. 위의 사진에서 release announcement 링크는 아래에 있습니다. Spring for GraphQL이 QueryDSL도 지원하며, HTTP나 WebSocket 클라이언트에서도 사용할 수 있다고 합니다. Spring 예제처럼 Graphql을 이용한 PetClinic 프로젝트 코드도 찾아볼 수 있습니다. https://spring.io/blo..
2023.07.22 -
SpringBoot + GraphQL (1/2)
들어가며 최근에 TypeScript + GraphQL을 경험했습니다. Spring 서버에서는 GraphQL을 어떤 방식으로 제공하는지 궁금해서 간단히 실습했습니다. 이번 포스팅에서는 GraphQL이 무엇이며, 장/단점은 무엇인지에 대해 다룹니다. SpringBoot에서 GraphQL을 어떻게 사용하는지는 다음 포스팅을 참고해주세요. GraphQL이란? GraphQL(gql)은 페이스북에서 만든 쿼리 언어입니다. '쿼리 언어' 하면 SQL이 가장 먼저 떠오르는데요, SQL은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이고, gql은 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적입니다. 따라서 sql의 문장(statement)은 주로 백앤드 시스템에서 작성하고 호..
2023.07.13 -
Openfeign으로 외부 API 호출하기
Intro 최근에 https://thecatapi.com/ 사이트에서 제공하는 데이터를 이용해서, 고양이 사진 정보를 제공하는 API 서버를 만들었습니다. 아 고양이 키우고싶다 제 SpringBoot 서버에서 고양이 사진 정보를 가져올 때, Spring Cloud 라이브러리의 Openfeign를 사용했습니다. 또, 최근에 본 MSA 관련 영상에서도 Openfeign을 이용해 내부 서비스들 간 데이터를 주고받는 것을 보고, 이참에 Openfeign을 포스팅해야겠다 싶었습니다. theCatApi가 제공하는 데이터는 아래 링크에 잘 나와 있습니다. https://developers.thecatapi.com/view-account/ylX4blBYT9FaoVd6OhvR?report=bOoHBz-8t Report ..
2023.05.28 -
WebSocket & STOMP 그룹 채팅방 구현하기
프로젝트에서 WebSocket과 STOMP 프로토콜을 이용해 그룹채팅방 기능을 구현했습니다. 스프린트 초반에는 댓글과 Polling 기법을 이용해 유저 간 소통하도록 하였습니다. 하지만 Polling 기법의 단점과 애플리케이션 특성을 고려하였을 때 실시간 채팅이 필요하다고 생각되어 고도화를 진행했습니다. Polling 클라이언트가 일정한 주기마다 서버로 요청을 보내는 방식입니다. 서버 데이터의 변경 여부와 상관없이 주기적으로 요청을 보내므로, 불필요한 요청에 따른 네트워크 부하가 늘어납니다. 또한 요청 인터벌을 너무 길게 잡을 경우 실시간성이 떨어지며, 짧게 잡을 경우 서버에 부하가 올라가는 trade off가 존재합니다. 실시간성이 중요하지 않거나 일정한 주기로 갱신되는 데이터를 조회할 때는 사용할 수..
2023.05.16 -
[SpringBoot] Annotation을 이용해 Slack에 Error log 남기기
이번 프로젝트에서 인프라를 도맡았습니다. 배포한 개발 서버와 운영 서버의 로그를 CloudWatch에 파일로 관리하였습니다. 하지만 1) 모든 팀원이 AWS에 접속하여 로그를 확인하는 것은 번거롭다고 느껴졌습니다. 2) AWS lambda는 요금 폭탄이 터질 수 있어서(재귀 호출) 제가 속한 교육기관에서 지원하지 않는 서비스였습니다. 3) Error 레벨의 로그는 신속한 대응이 필요하다고 생각했으며, 모든 팀원에게 빠르게 공유될 수 있어야 한다고 생각했습니다. 따라서 사용중인 협업 툴 중 슬랙을 이용해 알림을 받도록 설정했습니다. Pull Request logback-slack-appender 처음에는 Logback 설정으로 에러 로그를 Slack에 전송했습니다. 하지만 가독성이 좋지 못하고, 사용자의..
2023.03.18