웹 서버 성능테스트 - 병목 해결을 위한 단계별 테스트
·
Concept/성능테스트
회사 프로젝트 오픈 전 얼마만큼의 사용자를 처리할 수 있는지 확인하고 사업 목표 TPS를 달성하기 위해 성능테스트를 진행하였습니다. 성능테스트를 진행하기 전 시나리오를 작성하고 API를 최적화한 작업과, 테스트를 진행하며 병목 포인트를 찾아간 방법과 해결한 과정들을 적어 보았습니다. 웹 서버 성능테스트 과정 목차 어떤 시나리오를 선택 했는지 시나리오 내 API 최적화 작업 사항 부하테스트 도구 사용법 : 개념, 설정방법, 결과 확인 병목 포인트 발견 방법과 해결 과정 1 읽기용 시나리오 작성과 API 최적화 작업 시나리오는 읽기용과 쓰기용으로 나눠서 작성 1-1 시나리오 선정 예약하기 전 사용자가 상품을 둘러보기 전에 가장 많이 접근하는 3개의 페이지를 선정했다. 각 페이지는 여러 API로 이루어져 있다..
[Docker] Oracle 21c 버젼 설치
·
Database/Oracle
보호되어 있는 글입니다.
SQL 쿡북 스터디 회고
·
Essay/Learning Essay
SQL을 좀 더 정확히 짜고 싶어서 최근 SQL쿡북이라는 책으로 스터디를 했다. 요즘은 데이터분석이라는 조직에서 관련 업무를 해서 백엔드가 쿼리를 많이 짤 일은 없는 추세인 것 같기도하다. 근데 이 공부는 계속해서 필요를 느꼈고 하고 싶었던 주제여서 시작하게 되었다. 이번 스터디를 하면서 느낀 것은 개발 공부는 이론 정리와 실습이 항상 함께 가야하는데 이론 공부로는 어떤 영감?을 얻는 단계인 것 같다. '막연히 쿼리를 더 잘 짜고 싶다, 결과 보장하는 쿼리를 짜고 싶다'는 마음으로는 더 잘되지가 않는다. 종종 개발 커뮤니티를 보면 해당 질문이 가끔 올라오고 답변으로 실무를 추천하는데 바로 투입되야하는 상황에서 실력을 바로 늘릴 수는 없다. 그러려면 때로는 지루하고 진득하게 이론을 볼 필요가 있는데 이번 ..
Java Secure coding
·
Java
자바에는 보안 코딩 지침이 있습니다. 보안 코딩 지침 참고 자료를 소개하는 글을 작성합니다. 1. Oracle공식문서 내용 목차는 아래와 같이 구성되어 있습니다. 소개 0 기초 1 서비스 거부 2 기밀 정보 3 주입 및 포함 4 접근성 및 확장성 5 입력 검증 6 가변성 7 객체 구성 8 직렬화와 역직렬화 9 액세스 제어 결론 참조 부록 A: JNI의 방어적 사용 1-1 Oracle 유튜브 내용 위 공식문서 프리젠테이션 유튜브입니다. 심심할 때 틀어두고 대강의 내용을 파악하기에 좋습니다. 2. 자바 시큐어 코딩 가이드라인, 책 번역서로 원서 추천하는 리뷰가 있었습니다. 3. 그외 OWASP 웹 애플리케이션 관리할 때 보안 취약성 파악하는 기준 10가지를 제공합니다. 전체적으로 개발 시 유의해야할 보안 사..
FCM토큰 저장 테이블 최적화
·
Database/MySQL
보호되어 있는 글입니다.
FCM을 이용한 푸쉬 알림 개발
·
카테고리 없음
보호되어 있는 글입니다.
[프로젝트]exception 을 static으로 만든 이유
·
Java
보호되어 있는 글입니다.
프로젝트 쿼리 최적화 작업
·
Database/MySQL
보호되어 있는 글입니다.
Spring Event 를 활용한 예약 푸쉬 발송
·
Spring Framework/Spring
보호되어 있는 글입니다.
[REST API]프로젝트에서 경험한 API 설계 - HATEOAS
·
Concept/REST API
프로젝트에서 경험한 사례로 REST API 의 조건인 HATEOAS에 대해 알아보겠습니다. HATEOAS란 먼저 REST API는 6가지 주요 제약 조건을 가지고 있습니다. 클라이언트 서버 아키텍쳐 STATELESS 캐시 가능성 계층화된 시스템 코드 온디맨드(옵션) 균일한 인터페이스(uniform interface) 그 중에서 균일한 인터페이스라는 조건은 서버와 통신하는 단일 방법이 있음을 나타내는 것으로, RESTful API의 핵심이고 4가지 측면을 갖고 있습니다. 그 중에 하나가 애플리케이션 상태 엔진으로서의 하이퍼미디어 라는 것입니다. 다시 말하면, 리소스를 할당한 후 REST 클라이언트가 하이퍼링크를 통해 현재 사용 가능한 다른 모든 작업을 찾을 수 있어야 하는 것입니다. 예를 들면, 주문 정보..
Spring Security 디버깅 방법
·
Spring Framework/Spring
Spring Security는 여러 필터에서 OAuth2.0 인증을 처리하는데요. 필터 목록을 갖고 있는 FilterChainProxy을 확인 해보면 디버깅의 실마리를 찾을 수 있습니다. 스프링 시큐리티가 어떤 식으로 OAuth2.0을 구현하는지 또는 에러가 났는데 API 호출로는 에러가 났다는 것 이외에 별다른 정보가 없을 때 디버깅하는 방법을 소개하겠습니다. 1. FilterChainProxy 의 doFilter 메서드 중 원하는 곳에 break point를 겁니다. 스프링 시큐리티 디버깅을 위해 제일 처음 FilterChainProxy에 브레이크 포인트를 걸어서 확인하는 이유는 Spring Security를 사용하면 서블릿 필터는 FilterChainProxy라는 스프링 빈에 필터를 위임합니다. 즉..
IN과 EXISTS 연산 동작 방식 차이
·
Database/RDBMS공통
쿼리 작성할 때 IN과 EXISTS의 성능 차이에 대해서 종종 이야기하곤 합니다. 이 글에서는 먼저 IN과 EXISTS 연산 동작 방식에서 무엇이 다른지 알아보겠습니다. 그리고 NOT IN은 IN 절에 NULL 값이 있을 때 예상과 다른 결과가 도출되는데요. 그 이유에 대해 알아보겠습니다. 1 SQL엔진의 IN/EXISTS 비교 방식 차이 IN과 EXISTS 연산자의 주요 차이점은 다음과 같습니다. IN 연산자 EXISTS 연산자 1. IN은 여러 OR 연산자 대신 사용할 수 있습니다. 값이 반환되는지 여부를 확인하기 위해 EXISTS를 사용합니다. 2. IN은 하위 쿼리 결과가 작을 때 EXISTS 연산자보다 빠르게 작동합니다. 하위 쿼리 결과가 크면 EXISTS가 IN 연산자보다 빠르게 작동합니다. ..