Programming Language(100)
-
[Infra] 대용량 트래픽 대응 - 3. 세션 저장소로 어떤 것을 사용할 것인가
앞서 Scale out을 서버 성능 향상 기법으로 선택했을 때 생기는 문제점인 데이터 불일치 문제에 대해서 세 가지의 기법을 알아보았고, 그 중 세션 저장소 분리 방법을 적용하기로 하였다. 그렇다면 세션을 따로 저장할 저장소가 있어야 한다는 것인데, 이 저장소는 어떤 것을 선택해야 할까? 선택지는 두 가지, On-disk Database와 In-memory Database 가 있다. ① On-disk Database(디스크 기반 데이터베이스) 디스크 기반 데이터베이스는 데이터를 디스크에 저장하고 관리하게 된다. 디스크에 저장된 데이터는 안정성과 지속성을 보장할 수 있고, 메모리에 비해 가격이 저렴해 쉽게 확장이 가능하여 대용량 데이터를 처리하는데 용이하다. 하지만 단점을 꼽자면 접근 속도에서 메모리에 비..
2022.08.12 -
[Infra] 대용량 트래픽 대응 - 2. 세션 불일치의 문제 및 해결방안
앞서 서버의 성능을 높이는 방법으로 스케일 업과 스케일 아웃에 대해 알아보았다. 그리고, 스케일 아웃으로 방향을 정했을 때 고민해야 하는 문제는 세션 불일치에 대한 문제이다. 그에 앞서 세션이 무엇인지에 대해 간략하게 알아보자면, ※ 쿠키와 세션 ▽ 사용 이유 : HTTP 프로토콜의 특징이자 약점을 보완하기 위해서이다. ① Connectionless 프로토콜 (비연결지향) - 만일, 클라이언트가 서버로 요청을 보냈을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리 방식이다. - 이 부분은 HTTP 1.1 버전에서 연결을 유지하고 재활용하는 기능이 default로 추가되었다. (keep-alive 값으로 변경 가능) ② Stateless 프로토콜 - 클라이언트의 상태 정보를 서버 측에서 가지지 않는..
2022.08.11 -
[Infra] 대용량 트래픽 대응 - 1. 스케일 업(scale-up) vs 스케일 아웃(scale-out)
사용자에게 제공할 서비스를 만들었다고 가정하자. 내가 만든 이 서비스의 폭발적인 인기로 인해 사용자 수가 급증하여 서버에 대한 요청 또한 급증했다고 가정했을 때, 일반적인 서버로는 버틸 수 없다. 만일 그런 상황이라면 서버는 다운되고 서비스 이용자들은 불편을 겪을 것이며 이 사이트는 결국 이용자수가 급갑하게 될 것이다. 이런 상황에 대비하기 위해 대규모 트래픽에 대응할 수 있도록 서버의 성능을 향상시켜야 하는데 이 때 중요한 것이 Scalability 이다. ※ Scalability (확장성) 시스템이 제대로 기능하기 위해 요구사항에 맞추어 용량 및 성능을 조절하는 것을 뜻한다. 얼마나 많은 트래픽을 처리할 수 있는가, 얼마나 많은 트랜잭션을 처리할 수 있는가 등 시스템 내에서 많은 부분이 이 scala..
2022.08.11 -
[MySQL] MySQL 문법
① CREATE ▷ 데이터베이스 생성 CREATE DATABASE 데이터베이스이름 새로운 데이터베이스를 생성해준다. ▷ 데이터베이스 선택 USE 데이터베이스이름 -- 유닉스 환경의 MySQL은 데이터베이스 이름의 대소문자를 구분하나 윈도우는 구분하지 않음 ▷ 테이블 생성 CREATE TABLE 테이블이름 ( 필드이름1 필드타입1, 필드이름2 필드타입2, ... ) 타입같은 경우는 추후 포스팅에서 다룰 예정이다. -- 예제 CREATE TABLE Member ( ID INT, Name VARCHAR(30), CreatedDate DATE, Age INT ); ▷ 제약 조건(constraint) 제약 조건이란 데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙이다. CREATE 문으로 테..
2022.08.09 -
[MySQL] MySQL 이란?
※ MySQL은? MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템이다. 오픈 소스이고, 다중 사용자와 다중 스레드를 지원한다. C, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 API를 제공한다. 유닉스, 리눅스, 윈도우 등 다양한 OS에서 사용 가능하다는 장점을 가진다. ※ 데이터베이스? 데이터의 저장소 또는 통합되어 관리되는 데이터의 집합체 의미 중복 데이터 제거, 자료 구조화, 효율적 처리를 위해 관리됨. 응용 프로그램과 다른 별도의 미들웨어에 의해 관리된다. 데이터베이스를 관리하는 미들웨어를 DBMS(데이터베이스 관리 시스템)라 한다. 사용자의 쿼리(SQL)에 대해서 즉각적 처리와 응답이 이루어진다. (CRUD) 사용자가 원하는 데이터를 동시에 공유할 수 있고 ..
2022.08.09 -
[Spring] 포인트컷 표현식
포인트컷 지시자(Pointcut Designator) execution : 메소드 실행 조인 포인트를 매칭한다. within : 특정 타입 내의 조인 포인트를 매칭한다. args : 인자가 주어진 타입의 인스턴스인 조인 포인트 this : 스프링 빈 객체를 대상으로 하는 조인 포인트 target : Target 객체를 대상으로 하는 조인 포인트 @target : 실행 객체의 클래스에 주어진 타입의 애노테이션이 있는 조인 포인트 @within : 주어진 애노테이션이 있는 타입 내 조인 포인트 @annotation : 메서드가 주어진 애노테이션을 가지고 있는 조인 포인트를 매칭 @args : 전달된 실제 인수의 런타임 타입이 주어진 타입의 애노테이션을 갖는 조인 포인트 bean : 스프링 전용 포인트컷 지시..
2022.08.07