[레디스 개념 및 특징]


Redis도 약자이다(REmote DIctionary Server)

Salvatore Sanfilippo라는 이탈리아 해커가 MySQL로 어떤 어플을 개발하다가 느려터졌다고 생각했고, 

직접 빠른 서버를 만들어봐야겠다고 생각했고, 

그 결과 Redis를 개발하게 되었다는 비하인드 스토리...


이 인간


[레디스 특징


1. 오픈 소스 소프트웨어고,

2. 디스크가 아닌 메모리 기반의 데이터 저장소이다. (In-Memory data structure store) 

3. NoSQL & Cache 솔루션이며 메모리 기반으로 구성된다.

4. 명시적으로 삭제, expire를 설정하지 않으면 데이터는 삭제되지 않는다(영구적 보존)

5. 여러대의 서버 구성 가능하다.

6. 데이터베이스로 사용될 수 있으며, Cache로도 사용될 수 있는 기술이다.

7. 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행한다. 


Memory 위에서 동작하는 Key/value 저장소(Store)인 레디스는 NoSQL DBMS로 분류되며 동시에 Memcached와 같은 인메모리(In-memory) 솔루션으로 분리된다. 

성능은 Memcached이 갖고 있는 좋은점을 기반으로 만들어졌기 때문에 Memcached보다 우수하긴하지만 더욱 복잡하며, 다양한 데이터 구조체를 지원하기 때문에 Message Queue, Shared memory, Remote Dictionary 용도로 사용될 수도 있다. 

대부분의 언어를 사용할 수 있지만, Linux를 이용하기를 권장하고 있다.

그리고, 안전한 데이터의 보관과 백업을 위해 두 가지 방법을 제공한다.


1. 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있다. 

2. 디스크에 직접 저장하는 방법도 존재한다.


NoSQL 중에서도 Redis가 주목을 받는 이유는 다음과 같다.

- 데이터 저장소로 입력/출력이 가장 빠른 메모리를 채택.

- 단순한 구조의 데이터 모델인 Key-Value 방식을 통해 빠른 속도.

- 캐시 및 데이터 스토어에 유리.

- 다양한 API 지원.


Redis는 페이스북, 인스타그램, 네이버 LINE 서비스, StackOverflow, 블리자드 등 대형 서비스 없체들이 사용자들의 대규모 메세지를 실시간으로 처리하기 위하여 사용하고 있다.


※인메모리 캐시(In-memory Cache)란?


메모리 캐시 기반의 제품이 많은 시스템에서 사용되는 이유는 단연 성능!!!

캐시 방식을 통해 DB Read의 부하를 감소할 수 있기 때문이다.

서비스 요청이 증가하여 DB요청이 많아지면 DB서버 부하가 증가하게 되는데 메모리 

캐시가 적용되면 성능 및 처리속도가 향상된다.


[레디스 장점]


1. 리스트, 배열과 같은 데이터를 처리하는데 유용하다.

 - value 값으로 문자열, 리스트, Set, Sorted set, Hash 등 여러 데이터 형식을 지원.

 - 따라서 다양한 방식으로 데이터를 활용할 수 있다. 

 - 리스트형 데이터 입력과 삭제가 MySQL에 비해서 10배정도 빠르다고 한다.

 - 

2. 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우,

   Atomic 처리로 데이터 부정합 방지 Atomic처리 함수를 제공(뭔 소린지 모르겠다...)


3. 메모리를 활용하면서 영속적인 데이터 보존

 - 명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다.

 - 스냅샷(기억장치) 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장하여 해당 시점으로 복구할 수 있다.


4. Redis Server는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여러개의 서버를  

   띄우는 것이 가능하다.

 - Master - Slave 형식으로 구성이 가능함

 - 데이터 분실 위험을 없애주는 것이 바로 위 Master - Slave 방식이다.



위 기능을 이용하면 실시간으로 데이터를 다른 서버에 복제한다. 

즉, Master server가 down되어도, slave server로 접속하면 바로 서비스를 계속할 수 있다.

그리고 레디스의 성능을 거의 떨어뜨리지 않고 디스크 쓰기 기능을 제공한다. 

레디스 시작 시 이 데이터를 읽어 들어므로 데이터 분실 위험은 거의 없다고 봐도 된다.


5. Redis에는 5가지의 데이터형을 사용할 수 있다.

 - String

 - Lists

 - Sets

 - Sorted sets

 - Hashs



다음 블로그에서...



[참고 사이트]


http://ojava.tistory.com/70

http://bcho.tistory.com/654

http://mydb.tistory.com/210

http://redis.io/documentation

http://crystalcube.co.kr/176 


Posted by sungho88
,

OS(Operating System)운 운영체제. → Windows, Linux, Unix, IOS 등등이 이에 속한다.

한 컴퓨터에 여러개 설치를 할 수는 있지만, 실행은 하나만 가능하다.

하지만, 가상 OS를 사용하면 하나의 OS에서 여러개의 OS를 실행하는 것이 가능하다.


대표적인 가상 OS 프로그램이 바로 VirtualBox이다.

설치해보자.



VirtualBox 다운로드 공식 사이트


자신의 컴퓨터에 맞는 OS를 찾아서 다운로드 한뒤, 실행한다.




다음 과정도... 눈치껏 Next 무한 반복하면 설치가 완료된다.


위와 같이 뭘 설치하라고 나오면 무조건 설치 GoGo.

설치가 끝나면 바탕화면에 아이콘이 생겼다. 실행시킨다.



그럼 아래와 같은 첫 화면이 뜬다.




새로 만들기 머튼 클릭!




이름은 자기 마음대로.

종류는 자기가 원하는 OS를.. 버전도 자기가 원하는거. 하고 싶은거 해~


나는 Linux 그 중에서 Ubuntu를 설치!!



메모리를 지정하라고 한다.

테스트이고, 뭐 그다지 많이 필요없으므로 기본값인 768MB로 한다...왜 이렇게 크지.?



처음이므로 가상 하드디스크가 존재하지 않는다.

그러므로 그냥 냅두고 만들기 버튼 클릭하여 넘어가면 된다.


이게 뭔가.

모른다. 그냥 VDI로 선택하고 넘어간다.

또 물어본다.

동적 할당 고정 크기...

그냥 동적 할당으로 넘기고 다음 클릭


또 묻는다.

하드디스크 용량 설정... 왠만큼 기본으로 잡아주기 때문에 그냥 넘겨.. 드디어 만들기 버튼이!


드디어 

드디어



 설치완료





















Posted by sungho88
,

EC2의 개념정리


EC2는 Elastic Compute Cloud의 약자.

아마존 웹 서비스(AWS)에서 가장 중요한 서비스이다.


한 대의 컴퓨터를 임대한다는 개념이며 특별한 컴퓨터도 아니다. 

우리가 흔히 사용하는 컴퓨터와 같다고 할 수 있으며, 

실제 컴퓨터로 할 수 있는 광범위한 작업들을 EC2를 통해 작업을 할 수 있다.


다만, EC2는 물리적이 아니라 아마존에서 세계 각 지역에 만들어놓은 인프라(데이터 센터)에 

만들어지는 것이기때문에 네트워크를 통해 제어를 해야한다.

(참고로 2016년. 서울에도 데이터 센터가 생겼다. 좀 더 빨라지지 않을까?)


AWS의 경우 클릭 몇 번만에 컴퓨터 1대를 설치할 수 있으므로 편리하다.

또한, 컴퓨터가 필요없게 됐을때 클릭 몇 번만에 컴퓨터를 설치할 수 있으므로 편리하다.

즉, 유연하며, 탄력이 있는 컴퓨팅이 가능하다.

EC2에 Elastic도 "탄력이 있는, 유연한" 이라는 뜻이다. 그래서 EC2로 이름을 만들은 것일수도 있겠다.

즉, 컴퓨터 생성 및 삭제가 매우 쉽다.


자신이 선호하는 OS를 설치하고, 웹 서비스를 위해 필요한 프로그램(웹 서버, DB)을 설치하면 된다.


EC2를 통한 가장 기본적인 업무는 


웹서버를 설치하고 이 웹서버를 통해서 

사용자가 웹브라우저를 통해 요청하는 웹페이지나 이미지, 동영상 등을 제공하는 것이다.


인스턴스란 1대의 컴퓨터를 의미하는 단위이다.



결론.


특징


1. 인터넷을 통해서만 접속을 할 수 있다.

2. 컴퓨터 주문 후 1분안에 생성이 가능하며 삭제 역시 즉시 제거가 가능하다.

3. 초기 구입비가 전혀 없고, 사용한만큼 비용을 지불하면 된다.

4. 컴퓨터를 사용할때 프로그램 설치, 파일 저장, 설정 변경... 이 상태 그대로 저장이 가능하다.

이를 이미지라고 한다. 이 이미지를 이용해서 새 컴퓨터를 만들면 저장된 상태와 똑같은 컴퓨터를 

생성할 수 있다. 컴퓨터를 생성할때마다 반복적으로 설치하는 작업을 하지 않아도 되는 것이다.


AWS에서 EC2 서비스 - 인스턴스를 생성하는 방법은 이미 블로그에 작성을 해놨다.


인스턴스는 AWS에서 컴퓨터 하나를 의미한다.

인스턴스를 4개 생성한다는 표현은 4개의 컴퓨터를 AWS 인프라 위에 생성한다는 뜻이다.

 



EC2와 웹 서버


다시 말하면,

EC2의 인스턴스는 한 대의 독립적인 컴퓨터이기 때문에 뭐든 일을 EC2로 할 수 있다.

하지만, AWS를 위해 고안된 인프라 서비스이고, AWS에서 제공하는 서비스 중에 웹서버 역할을 할 수 있는 서비스는 EC2밖에 없기때문에 가장 중요한 기능은 역시 웹서버라고 할 수 있다.

즉, 인스턴스에 웹서버를 설치하는 방법에 대해 알아보고, 웹서비스를 하는 방법에 대해 알아보자.


웹서버인 Apache를 설치하기위해 SSH를 통해 인스턴스에 접근을 해야한다.

이것역시 이전에 블로그에 작성해놨다.


PUTTY를 이용하여 인스턴스에 접근하는 방법



이와같은 Welcome to ubuntu  ~~~~~~

라고 나온다면 정상적으로 접속한 것!!!!



접속을 완료했다면, 다음과 같은 명령어를 입력한다.



sudo apt-get update;


뭔가 쭉쭉쭉 쫙쫙쫙 올라가면서 자동으로 뭔가가 설치된다.

설치되어있는 모둔 패키지를 새 버전으로 업데이트 시키라는 명령어다.



sudo apt-get install apache2;

아파치(Apache) 웹서버가 설치되었다.



정리.


Linux 기반의 ubuntu 환경의 인스턴스를 만들었고, 그 위에 아파치를 설치했다.

이제 접속이 되는지 테스트를 해봐야겠다.


웹브라우저에 Public DNS 주소를 쳐보자.



이런 화면이 나온다면 정상적으로 동작하고 있는것이다!!!!!!!!!!!










Posted by sungho88
,