본문 바로가기

스프링

(34)
정적 분석기 SonarLint & SonarQube 사용하기 목차 1. 정적 분석기란? 2. SonarLint란? 3. SonarQube란? 4. SonarQube의 구조 5. SonarLint 사용하기 6. SonarQube 사용하기 정적 분석기란? 코드를 검사하여 메모리 누수 또는 버퍼 오버플로우 등 일반적으로 알려진 오류 및 취약점을 파악합니다. 또한 정적 분석을 활용하면 코딩 표준 적용이 가능합니다 CI 파이프라인의 첫 단계에서 수행하거나 변경 사항 커밋 전 IDE에서 직접 수행할 수 있습니다. 정적 분석기의 지원 기능 • 코드 규칙 검사 • 코드 스타일 검사 • 중복 코드 검사 • 버그 검사 • 보안 취약점 검사 정적 분석기 추천 SonarLint • 인텔리J 플러그인 • IDE 에서 정적 분석 제공 SonarLint란? SonarLint는 인텔리제이 플..
Spring으로 ABTest 진행하기 (1/2) - ABTest란 무엇인가? 목차 ABTest란? ABTest 관련 용어 ABTest 실험 사례 ABTest 실험 목적 ABTest 기간 ABTest 유의 사항 ABTest의 추가 이점 ABTest 도구 UX 변경에 따른 회원가입 증가율, 결제 전환율, 새로 변경된 알고리즘을 트래픽 비율로 점진적으로 테스트하기 등 서버에서 다양한 ABTest를 진행합니다. Spring 기반의 서버 환경에서 ABTest를 진행하려고 합니다. 이번 글에서는 ABTest가 무엇인지 확인하고, 다음 글에서 ABTest 도구 중 하나인 핵클을 사용해 ABTest를 진행해 보겠습니다. ABTest란? 기존 버전(A안)과 신규 버전(B안)을 만들어 둘 다 고객에게 일정 비율로 노출 어느 쪽이 더 좋은지 확인합니다. 온라인 환경에서 통제된 상황으로 진행됩니다. ..
Spring으로 ABTest 진행하기 (2/2) - Hackle 사용하기 목차 핵클(Hackle)이란? 핵클로 무엇을 할 수 있나? 핵클에서 제공되는 SDK 핵클 SDK로 할 수 있는 것 핵클 SDK 적용 핵클 SDK 진행하기 - 자바 핵클 ABTest 진행하기 핵클 기능 플래그 진행하기 저번 글에서 ABTest가 무엇이고 대표적인 도구들을 알아봤습니다. 이번 글에서는 도구들 중 하나인 Hackle을 이용해 Spring 서버 환경에서 ABTest를 진행해 보겠습니다. 코드는 깃허브에서 확인 가능합니다. GitHub - keepseung/Spring-Blog-Source: 스프링 부트를 사용해 어플리케이션을 만들때 필요한 기능들을 담 스프링 부트를 사용해 어플리케이션을 만들때 필요한 기능들을 담고 있습니다. . Contribute to keepseung/Spring-Blog-S..
Spring으로 Slack 알림 보내기 목차 1. 알림의 중요성 2. Spring으로 Slack 알림 보내기 알림의 중요성 서비스 지표가 문제가 있거나 시스템에 문제가 있는 경우 팀 내부에서 빠르게 인지하는 게 필요합니다. 서비스 지표에 문제가 있는 예시는 다음과 같습니다. • 급격한 주문 건 수 감소 • 급격한 결제 건 수 감소 • 급격한 검색량 감소 • 급격한 매출 감소 시스템 이상 예시는 다음과 같습니다. • CPU 사용률 증가 • 5xx 응답 오류 증가 • 메모리 부족 • 데이터베이스 커넥션 부족 • Full GC 발생 • API 지연 • 카프카 메시지 랙 이런 상황에서 빠르게 알림을 보내주는게 중요합니다. 사내 메신저로 많이 쓰이는 Slack으로 알림을 보내는 예시를 만들어보겠습니다. Spring으로 Slack 알림 보내기 1. Sl..
스프링으로 파일 업로드 구현하기 - MultipartFile 인터페이스 스프링은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원합니다. SpringUploadController @Slf4j @Controller @RequestMapping("/spring") public class SpringUploadController { @Value("${file.dir}") private String fileDir; @GetMapping("/upload") public String newFile() { return "upload-form"; } @PostMapping("/upload") public String saveFile(@RequestParam String itemName, @RequestParam MultipartFile file, HttpSer..
서블릿의 파일 업로드 - 서블릿이 제공하는 Part 파일 업로드 소개 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 합니다. HTML 폼 전송 방식 application/x-www-form-urlencoded multipart/form-data application/x-www-form-urlencoded 방식 웹 브라우저가 생성한 요청 HTTP 메시지 POST /save HTTP/1.1 Host: Iocalhost:8080 Content-Type: application/x-www-form-urlencoded name=as&age=20 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법입니다. Form 태그에 별도의 enct..
스프링이 제공하는 기본 포맷터 - @NumberFormat, @DateTimeFormat 스프링은 자바에서 기본으로 제공하는 타입들에 대해 수많은 포맷터를 기본으로 제공합니다. IDE에서 Formatter 인터페이스의 구현 클래스를 찾아보면 수 많은 날짜나 시간 관련 포맷터가 제공되는 것을 확인할 수 있습니다. 그런데 포맷터는 기본 형식이 지정되어 있기 때문에, 객체의 각 필드마다 다른 형식으로 포맷을 지정하기는 어렵습니다. 스프링은 이런 문제를 해결하기 위해 애노테이션 기반으로 원하는 형식을 지정해서 사용할 수 있는 매우 유용한 포맷터 두 가지를 기본으로 제공합니다. @NumberFormat : 숫자 관련 형식 지정 포맷터 사용, NumberFormatAnnotationFormatterFactory @DateTimeFormat : 날짜 관련 형식 지정 포맷터 사용, Jsr310DateTim..
스프링 포맷터(Formatter), 포맷터를 지원하는 ConversionService 스프링 포맷터란(Formatter)?? 웹 애플리케이션에서 객체를 문자로, 문자를 객체로 변환하는 예 화면에 숫자를 출력해야 하는데, Integer => String 출력 시점에 숫자 1000 문자 "1,000" 이렇게 1000 단위에 쉼표를 넣어서 출력하거나, 또는 "1,000"라는 문자를 1000이라는 숫자로 변경해야 합니다. 날짜 객체를 문자인 "2021-01-01 10:50:11" 와 같이 출력하거나 또는 그 반대의 상황 Locale 여기에 추가로 날짜 숫자의 표현 방법은 Locale 현지화 정보가 사용될 수 있습니다. 이렇게 객체를 특정한 포멧에 맞추어 문자로 출력하거나 또는 그 반대의 역할을 하는 것에 특화된 기능이 바로 포맷터(Formatter)입니다. 포맷터는 컨버터의 특별한 버전으로 이해..