전체 글 40

Apache JMeter란? + 부하 테스트, 사용법

Apache Jmeter를 접하게 된 이유 4개월 정도 진행해오던 복쟉복쟉이라는 프로젝트가 이제 배포를 앞두고 있다. 배포를 앞두기 전에 성능 저하 (ex. JPA N+1문제를 일으키는 것들, 현재 EC2가 어느정도까지 수용가능한지) 를 체크하기 위해서 접하게 되었다. 제대로 체크해보기전 Apache Jmeter의 설치 과정과 사용법을 알아보려고 한다. Apache Jmeter Apache Jmeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다. JMeter는 순수 Java 애플리케이션 오픈 소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다. 비슷한 부하테스트 도구로는 Apache B..

Project 2023.08.22

애자일과 워터폴 개발 프로세스

애자일(Agile) 방법론은 오늘날 많은 기업에서 사용하고 있는 방법론이다. 현재 대부분의 IT 조직 개발 환경은 애자일 방법론의 영향을 받았고, 실천하고 있다고해도 과언이 아니다. 애자일 방법론의 출발은 소프트웨어 개발 형식이었지만 이제는 제품 개발을 넘어 하나의 일하는 방식, 워크플로우로 자리 잡았다. 전통적인 워터폴 방법론 워터폴 방법론은 폭포수 방법론이라고도 불리며 이름에서도 알 수 있듯이 각 작업이 폭포처럼 위에서 아래로 떨어지는 단계별 개발 방법론이다. 그 단계는 다음과 같다. 요구사항 정의(설계) → 디자인 → 개발 → 테스트 → 배포 위의 과정이 순차적으로 진행되며 이전 단계가 그다음 단계로 떨어지게 된다. 애자일 방법론이 등장하기 전까지는 소프트웨어 개발 뿐 아니라 자동차, 선박 등 산업..

기타 2023.08.13

[Project] @Transactional + CustomException을 Controll하자

Project 하던 중, 정상적인 값이 조회되는데 DB값은 안바뀌는 상황이 있었다. 그에 대해 이야기 해보려고 한다. 전제 안드로이드 측에서 kakao accessToken을 주면 DB에 kakaoUser가 이미 존재 -> 바로 서버 accessToken 및 refreshToken 발급 (httpstatus 200 내려줌) DB에 kakaoUser가 존재 x 즉 첫 방문 User -> signToken을 발급해서 닉네임, 이메일 등 부가 정보를 입력하는 화면으로 이동 후, 앞서 발급한 signToken + 부가 정보를 받아서 회원 가입 (httpstatus 404 내려줌 -> 즉 exception 터트림) + 추가적으로 만약 회원 탈퇴를 할 시, 중복 가입 방지를 위해 탈퇴한 회원은 한달 동안 가입을 못..

Project 2023.08.08

옵저버 패턴(Observer Pattern)이란

옵저버 패턴(Observer Pattern) 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 서로의 정보를 주고받는 과정에서 정보의 단위가 클수록, 객체들의 규모가 클수록 복잡성이 증가하게 된다. 이때 가이드라인을 제시해줄 수 있는 것이 옵저버 패턴이다. (보통 1 대 1 or 1 대 N 관계에서 사용) 옵저버 패턴을 활용하면 다른 객체의 상태 변화를 별도의 함수 호출 없이 즉각적으로 알 수 있기 때문에 이벤트에 대한 처리를 자주해야 하는 프로그램이라면 매우 효율적인 프로그램을 작성할 수 있다. 적용 사례 잡지사 : 구독자 우유배달업체 : 고객 위와 같..

Design Pattern 2023.07.11

FCM(Firebase - Cloud - Messaging)이란? + FCM Token, FCM Topic

FCM(Firebase - Cloud - Messaging) FCM은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다. 모든 사용자에게 알림 메세지를 전송할 수 있고, 그룹을 지어 메시지를 전송할 수도 있다. FIrebase의 서비스는 요금 정책에 따라, 이용할 수 있는 범위가 다르지만 FCM은 요금 정책에 구분 없이 무료로 사용하는 것이 가능하다. 왜 FCM을 써야할까? 기존에는 iOS, Android, Web 등의 플랫폼에서 Push 메시지를 보내기 위해서는 각 플랫폼 환경별로 개발해야 하는 불편함이 있었다. 하지만 FCM은 교차 플랫폼 메시지 솔루션이기 때문에 FCM을 이용해서 개발을 진행하면, 플랫폼에 종속되지 않고 Push 메시지를 전송할 수 있다. 따라서 위의 문제를 ..

기타 2023.06.28

스티키 세션(Sticky Session), 세션 클러스터링(Session Clustering)이란? + 세션, 로드 밸런싱, Session Storage

세션 (Session) 세션을 사용하는 이유? HTTP프로토콜의 특징이자 약점을 보완하기 위해 사용된다. 1. Connectionless, Protocol 비연결지향 클라이언트가 서버에 요청했을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식 2. Stateless Protocol (상태정보 유지 안함) 클라이언트의 상태정보를 가지지 않는 서버처리방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다. 하지만 실제로는 데이터유지가 필요한 경우가 많다. 정보가 유지되지 않으면 매번 페이지 이동시 마다 로그인을 해야하거나 장바구니에서 상품을 선택했는데 구매페이지에서 상품의 정보가 사라지는 경우가 생길 것이다. 이러한 이유로 세션 또는 쿠키를..

Network 2023.05.16

Mock이란? + Mockito,Spy,InjectMocks

Mock이란? Mock은 한글로 “모의, 가짜의”라는 뜻으로 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효용성을 높이기 위해 사용된다. @Service public class StudentService { public Student getStudent() { // DB에서 Student 테이블 조회 (부하가 많이 걸리는 작업) } } 위처럼 DB에서 Student 테이블을 읽어 Student 객체를 리턴하는 메소드를 테스트하고 싶은데 매번 테스트할 때마다 DB를 읽어오는 것이 부하가 많이 걸리고, 시간도 많이 걸린다면 번거로워 질 것이다. 그래서 Student를 DB에서 읽어오지 않고 가짜 객체 즉, mock을 만들어서 DB에 있는 테이블 접근을 최소화할 수 있다. mock으로 ..

Spring 2023.05.13

트랜잭션(Transaction)이란? + Spring transactional

트랜잭션 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산을 의미한다. 여기서 데이터베이스의 상태를 변화시킨다의 의미는 질의어(SQL:SELECT, INSERT, DELETE, UPDATE)를 이용하여 데이터베이스에 접근하는 것을 의미한다. 트랜잭션은 작업의 완전성을 보장해준다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 은행에서 돈을 이체하는 작업을 예시로 들자면 1. A은행에서 B은행으로 돈을 계좌 이체하려고 함 2. 송금 중 알 수 없는 오류로 A은행에서 돈은 빠져나갔지만 B은행의 계좌에는 입금되지 않는 경우...

DataBase(MySQL) 2023.05.01

swagger란? + swagger annotation

Swagger Swagger는 웹 서비스 명세를 문서화 해주는 오픈 소스 소프트웨어 프레임워크이다. 즉 웹 서비스가 어떤 로직을 수행하고, 이 로직을 수행하기 위해서는 어떤 값을 요청하며, 이에 따른 응답값은 무엇인지 정리해서 문서화해주는 프로젝트이다. 보통 웹 어플리케이션을 개발할 때 프론트와 백엔드로 팀을 나누어서 개발을 하는데, 이 때, 백엔드 팀이 만든 서비스를 swagger로 문서화해서 프론트 팀으로 넘겨 로직의 이해도를 높이고, 소통한다. swagger를 사용하면 개발과정 속에서 계속 변경되는 명세 문서를 알아서 주기적으로 업데이트해주기 때문에 번거로움을 없애고, 시간을 절약할 수 있다. springboot 3.0.0 이상부터는 springfox가 아닌 springdoc-openapi-ui 라..

기타 2023.04.10

JWT, OAuth란 ? + 구조, 예시

서론 프로젝트 중 회원가입 및 로그인 구현을 맡게되어서 JWT와 OAuth에 대해 알아보게 되었다. OAuth OAuth(Open Authentication 또는 Open Authorizaion)는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. OAuth의 기본 핵심은 인증 과정을 제 3자에게 위임하는 것이다. 따라서 제 3자의 인증 정보를 내 서비스에서 이용한다고 볼 수 있다. 여기서 제 3자는 카카오, 구글, 네이버 등이 있다. OAuth가 사용되기 전에는 외부 사이트와 인증 기반의 데이터를 연동할 때 인증 방식의 표준이 없었기 때문에, 기존의 ..

Network 2023.03.30