CS 75

서버 성능 테스트

서버 성능 테스트의 목적은 최대 몇 명의 사용자를 수용할 수 있는지 확인하고, 그 결과가 최초 목표한 성능에 부합하는지 알아내기 위해서이다. 1. Throughput : 시간당 처리량으로 TPS(Transaction Per Second), RPS(Request Per Second)등으로 불리며 1초에 처리하는 단위 작업의 수 혹은 1초에 처리하는 HTTP 요청 수 등으로 해석할 수 잇다. 2. Latency : 서비스의 성능을 말할 때 Latency는 서버가 클라이언트로부터 요청을 받아서 응답을 보내주기까지 걸리는 시간을 의미한다. 직역을 하면 서버가 클라이언트의 요청을 처리하는데 발생하는 지연시간 Lactency를 개선하기 위해서는 하드웨어의 처리 성능, 애플리케이션 로직, 쿼리 인덱스 등 다양한 원인..

CS/ETC. 2021.08.11

Redis

1. 사용법, 사용이유 https://meetup.toast.com/posts/224 개발자를 위한 레디스 튜토리얼 01 : NHN Cloud Meetup 레디스는 오픈소스이고, 다양한 서비스에서 레디스를 자유롭게 사용하고 있습니다. 위의 사진에서 볼 수 있듯이 Airbnb, Uber, Instagram도 레디스를 사용하고 있네요. 핑크다이어리, 토스트파일, 두 meetup.toast.com 2. 설정 방법 및 이용방법 https://github.com/jojoldu/blog-code/tree/master/springboot-data-redis GitHub - jojoldu/blog-code: http://jojoldu.tistory.com/ 에서 제공하는 예제 code http://jojoldu.tis..

CS/DataBase 2021.08.11

MySQL 인덱스(Index) & 파티션Partition & Full-Text Search

1. 인덱스 Select시 빨리 추출 가능(수정, 변경 작업 많은 곳에 쓰면 성능 나빠질 수 있다. ) 종류 : 클러스터형 인덱스(영어사전 같은 것), 보조 인덱스(책뒤 찾아보기 기능 같은 것) 클러스터형 인덱스 : 테이블 당 한 개만 생성, 보조 인덱스는 테이블 당 여러 개 생성 가능 클러스터형 인덱스는 행 데이터를 인덱스로 지정한 열에 맞춰서 자동 정렬 primary key(클러스터형 인덱스)또는 Unique(보조 인덱스)에는 인덱스가 자동으로 생성됨( unique인데 notnull 붙이면 클러스터형 인덱스 됨, pk랑 중복 시 pk가 클러스터형 인덱스가 됨) 클러스터형 인덱스는 루트 페이지와 리프 페이지로 인덱스가 구성되어 있으며 인덱스 페이지의 리프 페이지는 데이터 그 자체이다. 보조 인덱스는 데..

CS/DataBase 2021.08.09

DB관련 익셉션 변환 처리 및 트랜잭션 처리

1. DB 관련 Exception처리 1) DB 연동 과정에서 발생 가능 한 익셉션 Access denied for user 'example'@'localhost'~~~ org.springframework.jdbc.CannotGetJdbcConnectionException : Failed to obtain JDBC Connection //DB연결정보가 DataSource에 있으니 DataSource를 잘못 설정하면 연결을 구할 수 없다는 익셉션이 뜨는 것 이 에러는 MySQL서버에 연결할 권한이 없을 경우에 발생 (비밀번호 잘못 입력했을 경우) 2) DB를 실행하지 않았거나 방화벽에 막혀서 연결할 수 없는 경우 org.springframework.jdbc.CannotGetJdbcConnectionExce..

CS/DataBase 2021.08.05

REST API

1. 의미 REST(분산 하이퍼 미디어 시스템(웹)을 위한 아키텍처 스타일) 아키텍처 스타일을 따르는 API 2. REST를 구성하는 스타일 client-server stateless cache uniform interface의 제약조건 (identification of resources, manipulationof resources through representations, self-descriptive messages, HATEOAS) layered system code-on-demand(optional) -ex) JavaScript 서버에서 클라이언트로 보낸 코드가 작동해야 3. uniform interface의 제약조건 1) self-descriptive messages (메시지는 스스로를 설명..

CS/Network 2021.07.30

정규화(Normalization)

1. 제1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다. 1) 다중 값을 가지는 경우 하나의 속성에는 하나의 값을 가져야 하고 다중 값이 들어갈 경우에는 고객 연락처라는 엔티티를 추가하여 따로 관리하자. 2) 다른 유형의 중복 데이터를 가지는 경우 중복 데이터를 분리하여 주문 상세라는 엔티티를 만들어 다른 유형의 중복 데이터 발생하지 않게 한다. 제2 정규형 : 엔티티의 일반 속성은 주 식별자 전체에 종속적이어야 한다. 여기서는 상품명이 식별자 전체가 아닌 상품 번호에만 종속되어있는 부분 종속에 해당한다. 상품명을 변경해 주어야 할 때 주문 상세에 상품명을 모두 변경해야 하고 많이 팔린 상품을 수정하는데 부하가 크게 증가한다 따라서 나누어 줘야 한다. 상품 엔티티를 추가해서 주문 상세 엔티티의..

CS/DataBase 2021.07.28

BIg-O 표기법

1. Big-O 표기법이란? 알고리즘의 성능을 수학적으로 표기해 시간, 공간 복잡도 나타내 줄 수 있다. a. 시간 복잡도란 시간 복잡도(Time Complexity)는 알고리즘이 입력받는 데이터의 수 혹은 크기를 변수로하여 실제로 수행되는 연산량을 수식 형태로 표기하는 것을 말한다. 시간 복잡도는 주로 빅-오 표기법(Big-O Notation)을 사용한다. 1) O(1)알고리즘 : constant time 데이터의 크기에 상관없이 성능의 변화가 없는 경우 문제 : 2) O(n) 알고리즘 : 데이터의 크기에 따라 비례해서 처리시간도 증가한다. 3) O(n^2) 알고리즘 : quadratic time -> 지수함수형식 4) O(nm) 알고리즘 3)이랑 차의 주의 5) O(n^3) 6) O(2^n) : ex..

Builder Pattern(effective java)

1. 기본 : 생성자에 매개변수가 많다면 빌더 패턴 사용을 고려해라 - 생성자가 많을 경우 또는 오브젝트 생성 후 변경 불가능한 불변 오브젝트가 필요한 경우, 불변 오브젝트를 생성하여 오브젝트의 일관성, 변경 불가능을 실현하여 코드의 가독성과 불변성, 일관성을 유지하도록 한다. 객체 생성의 대표적 방법으론 1) 점층적 생성자 패턴 : 일관성, 불변성은 유지되지만, 가독성 좋지 않다. 어디에 뭐가 저장되는지 호출 코드만으로는 각 인자의 의미를 알기 어렵다. 2) 자바 빈 패턴 - Setter 메서드 쓰는 방식으로 어떤 해당 파라미터가 어떤 변수인지 메서드를 통해 확인 가능(일관성, 변경 불가능성 원칙 깨짐)-> 스레드 안정성을 위해 추가 작업 필요 3) 빌더 패턴이 있다. - 어떤 필드에 어떤 인자 넣어줬..

CS/DesignPattern 2021.07.08

ServerSideRendering vs. ClientSideRendering

1. ServerSideRendering 1) 의미 : 전통적인 웹 애플리케이션 렌더링 방식으로 사용자가 웹 페이지에 접근할 때 서버에 각각 페이지에 대한 요청을 하고 서버에서 html, js 파일 등을 다운로드해서 화면에 렌더링 하는 방식이다. 초기 렌더링 시에 내용이 존재하는, 미리 서버에서 랜더링 된 HTML을 받는다. 그 다음 자바스크립트로 웹 페이지를 완전하게 작동시킨다. 2) SSR의 장점 : - 사용자가 처음으로 컨텐츠를 볼 수 있는 시점을 앞 당길 수 있다. - 검색엔진 최적화에 용이하다.(검색엔진들의 크롤링 봇은 HTML 내용 자체를 긁어와서 처음에 내용이 빈 HTML을 받는 CSR 앱 들은 검색 엔진 노출에 불리하다. ) - SSR을 적용하면 초기 렌더링시에 내용이 있는 HTML에다가 ..

CS/ETC. 2021.07.07