본문 바로가기

Web Sever 개발과 CS 기초/스프링

(45)
테스트 결과를 ELK 사용하여 기록 남기기(Logstash Json parsing) 개요 목적 무식한 영어 프로젝트는 영어 식 통 문장 암기를 도와주는 서비스이다. 테스트 페이지를 통해서 번역본을 보고 영어식 표현을 만들 수 있는 지 확인 가능하다. 테스트 페이지 버튼(맞음 틀림 힘트 정답)을 누르면 해당 유저와 해당 문장의 테스트 결과를 ElasticSearch로 모아서 유의미한 데이터를 수집하려 한다. 각 버튼을 눌렀을 때 테스트 결과 데이터를 어떻게 ElasticSearch에 저장을 하고 Kibana 검색을 통해서 유의미한 정보를 화면에 출력할 수 있는 지 알아보자. ElasticSearch로 Json 직렬화 하여 보낼 데이터는 아래와 같다. public class TestResultDto { private Long userId; private Long sentenceId; pri..
백엔드 서버 API doc 작성과 Springdoc 자동 구성하기 관련 내용 해당 프로젝트 깃 허브 개요 목적 API doc은 서비스 기능을 사용할 수 있게 도와주는 설명서 역할을 한다. 내가 만든 영어 통문장 암기 서비스의 관리자 문장 관리 테스트 처리 API doc을 직접 표를 통해 만들어보고, spring-doc 라이브러리의 도움을 받아 자동으로 API doc을 생성하는 방법을 알아보자. API doc 구성 양식은 https://developers.kakao.com/docs/latest/ko/daum-search/dev-guide REST API 문서를 참고 했다. 관리자 문장 관리 & 테스트 처리 API doc 1. 관리자 문장을 추가 POST /api/admin/sentence/add MessageBody Name Type Description korean S..
HTTP 서버를 편리하게 만들 수 있는 HttpServlet 이해와 사용법 개요 목적 Java로 직접 구현하는 HTTP Sever 해당 프로젝트에서는 http 관련 클래스 없이 java 코드만으로 HTTP 프로토콜 서버를 구현했다. 그러다보니 Client Request Message를 일일이 분석해서 비지니스 코드에 적용해야 하고 그 결과를 Response 형식에 맞춰서 보내줘야 하는 동작을 반복해야 했다. 이러한 HTTP 서버를 만들 때 반복되는 동작들을 일관적으로 대신 처리해주는 것이 WAS에서 사용하는 서블릿이다. 자바는 HttpServlet 인터페이스를 사용하여 HTTP 서버를 비지니스 로직에만 집중하며 만들 수 있다. 이번 시간에는 Spring에서도 사용하는 서블릿에 대한 이해와 HttpServlet의 기본 사용법을 알아보겠다. 서블릿이란 서블릿은 개발자가 HTTP 스..
Java로 직접 구현하는 HTTP Server 관련 내용 [백엔드/네트워크 지식] - 리퀘스트 메소드와 HTTP 상태 코드 [백엔드/네트워크 지식] - HTTP 프로토콜 이해와 HTTP 버전 별 특징 개요 목적 이번 시간의 목표는 자바에서 제공하는 httpserver 클래스 사용 없이 HTTP 프로토콜을 사용하는 웹서버를 ServerSocket만 사용하여 구현하는 것이다. 그러기 위해서는 client가 보내오는 Request Message 구조를 이해하고 분석하여 원하는 동작을 얻어야 하며 Response Message 구조에 맞춰서 그에 맞는 데이터를 보내줘야 한다. HttpServer 클래스를 사용하는 것보다 불편하지만 HTTP 프로토콜을 직접 구현하면서 해당 프로토콜에 대한 이해를 높이는 좋은 시간이었다. ServerSocket으로 HTTP W..
Security-JWT 토큰을 이용한 OAuth2(Google) 인가 서비스 구현 개요 목적 이전 글에서는 Security와 JWT 토큰을 사용한 인증, 인가 서비스를 구현해보았다. [백엔드/스프링] - Spring Security와 JWT 토큰을 이용하여 REST API 인증,인가 구현하기 이번 시간에는 OAuth2-Google를 기존의 Security와 연결하여 Google 계정으로 인가 서비스를 제공해보려 한다. 기존의 Security와 JWT 토큰을 사용한 인증, 인가 프론트 - 백엔드 흐름은 아래와 같다. 이번 시간에 추가될 OAuth2-Google 흐름은, 구글 계정으로 로그인 한 후 해당 정보를 DB에 저장 JWT 토큰을 발급 전달하는 과정이다. 이 과정이 끝나고 UI에서 똑같이 JWT 토큰을 획득하면 기존 Security 인가 서비스를 그대로 이용할 수 있게 된다. 하나..
스프링 알림 기능 - Spring Data JPA DB 구현 개요 목적 스프링으로 구현한 서비스에서 알림 기능을 추가하기 위한 데이터 베이스(Spring Data Jpa) 설정 방법에 대해 알아본다. 알림 서비스에서 사용할 예시는, 황대영이라는 유저가 관리하는 유저 문장 그룹이 있고, 해당 문장 그룹을 구독하는 김민우 유저가 존재한다. 문장 그룹을 구독하거나, 구독한 문장 그룹이 입데이트(문장 추가,삭제)되면 각 관련 유저에게 알림이 가는 시스템이다. 실제 사용 동작 예시 확인 1. 구독자 추가 알림 - 문장 그룹 주인 황대영에게 구독자가 늘었다고 알림이 간다. 2. 문장 추가 알림 - 황대영 문장 그룹에 문장이 추가되면 구독한 김민우 유저에게 문장 그룹이 업데이트 되었다고 알림이 간다. 3. 문장 삭제 알림 - 문장 그룹에 문장이 삭제되면 구독한 김민우에게 문장..
Spring - MySQL과 Querydsl 통계 쿼리 처리(group by, Expressions) 관련 내용 Querydsl 이해와 사용법 Querydsl 이해와 사용법 Querydsl JOIN((INNER, LEFT, RIGHT, THETA, FETCH) 사용법 Querydsl 의 JOIN (INNER, LEFT, RIGHT, THETA, FETCH) 사용법 개요 목적 이번 시간에는 Mysql과 Querydsl을 사용한 통계 쿼리 처리 방법에 대해서 알아본다. 통계 처리할 작업은 두 가지이다. 하루 단위 가게 전체 매출 구하기 배달 서비스에 등록된 모든 음식점이 하루 판매 금액을 알 수 있다. 하루 단위 가게 별(company_member_id) 매출 구하기 각 음식점이 오늘 판매한 금액을 알 수 있다. 먼저 MySQL 쿼리를 직접 작성하는 방식으로 통계 처리 하는 법을 알아보고, 해당 동작을 Qu..
Querydsl를 사용한 동적 쿼리 만들기 관련 내용 SpringDataJPA 이해와 사용법 Spring Data JPA 이해와 사용법 Querydsl 이해와 사용법 Querydsl 이해와 사용법 Querydsl JOIN((INNER, LEFT, RIGHT, THETA, FETCH) 사용법 Querydsl 의 JOIN (INNER, LEFT, RIGHT, THETA, FETCH) 사용법 개요 목적 이번 시간에는 동적 쿼리 최적화된 Querydsl를 사용해서, 세가지 연관된 테이블 데이터를 가져오는 방법에 대해서 알아보자. Querydsl를 사용할 상황 알아보기 해당 웹페이지에서 adminTestListCondition{”userId”: , “grammar”: , “situation”: , “check”: } 정보가 넘어오면 백엔드 페이지 에서는 ..

반응형