출처) https://gangnam-americano.tistory.com/30

 

■ NoSQL 이란?

NoSQL이란 Not Only SQL의 약자로 기존 관계형 데이터베이스(RDBMS)와는 다른형태의 데이터 저장기술을 의미한다.

기존의 RDBMS는 테이블형식의 row와 column 형태로 데이터가 저장되며 foriegn key를 이용하여 테이블, 데이터간의 관계를 정의하며 join을 통해 데이터를 조회할 수 있다.

NoSQL은 기존의 정적인 구조의 RDBMS보다 융통성있는 형태의 데이터 구조를 사용하고 있으며, 분산 저장 환경에 용이하여 데이터 저장 및 검색(scan) 작업에 있어 뛰어난 성능을 보인다. 단순한 데이터 검색에 용이한 key/value 형태는 응답속도나 처리효율에 큰 강점을 지니고 있어 빅데이터 환경에 특화되어 있다고 볼 수 있다.

NoSQL은 이러한 RDBMS와는 다른 형태의 저장 구조를 가지며, 크게 4가지 특성에 따라 NoSQL을 분류할 수 있다.

 

■ NoSQL의 종류

저장되는 데이터 구조에 따라 NoSQL은 다음과 같이 분류된다.

 

Key-Value Store

ey와 value로 이뤄진 간단한 데이터 구조로, 다른 형태 구조의 NoSQL이라도 기본적으로 대부분의 NoSQL에서는 key/value의 개념을 가진다. 기본적인 형태로 value에 String, Integer, List, Hash 등의 기본 자료형이 해당된다. 이러한 데이터 구조는 속도가 빠르며, 분산저장 환경에 용이하여 key에 대한 엑세스 속도는 빠르지만 검색(scan)에는 취약한 특징이있다.

 

대표적인 DB에는 Redis, Memcached 등이 있다.

 

Wide Column Store

Column Oriented Database 혹은 Column Family Oriented Database라고 불리는데, 일반적인 key/value의 형태의 데이터 구조에서 하나의 key에 하나의 value만 저장하는 단점을 극복하기 위해 value에 해당하는 값을 여러개의 Column형태로 저장하며 이 묶음을 Column Family라고 한다. 데이터마다 다른 스키마를 가질 수 있으며 이 점은 Document Store와 비슷하다고 볼 수도 있다. 또한 이러한 Column Oriented형태는 우리가 많이 사용하는 RDBMS와 많이 유사한 형태이다.

 

대표적인 DB에는 HBase, Cassandra 등이 있다.

 

Document Store

Document형태로 데이터가 저장되는데 여기서 말하는 Document는 JSON, XML등을 말하며 Column Oriented와 같이 스키마가 유동적인 것이 특징이다. 

 

대표적인 DB로는 MongoDB, CouchDB 등이 있다.

 

- Graph DB

데이터를 노드(node)간의 관계로 표현한 Database를 말한다.

 

대표적인 DB로는 Neo4j, OrientedDB 등이 있다.

 

'IT 용어 정리' 카테고리의 다른 글

DAO 와 DTO 란?  (0) 2019.09.26
MyBatis 란?  (0) 2019.09.26
node.js 란 무엇인가  (0) 2019.09.14
spring MVC 와 DispatcherServlet 의 정의  (0) 2019.09.14
front end와 back end의 정의  (0) 2019.09.13

출처) http://sblog.netraweb.com/node-js-%EA%B0%95%EC%A2%8C-node-js-%EB%9E%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%86%8C%EA%B0%9C/

 

 

모든 내용은 위의 출처이며 node.js와 연결된 자세한 내용은 출처의 링크를 통하여 확인 할 수 있습니다.

 

 

■ node.js 란?

Node.js는 확장성 있는 네트워크 어플리케이션 개발에 사용되는 소프트웨어 플랫폼입니다. 특시 서버사이드에서 많이 사용되곤 합니다. 사용되는 언어로는 자바스크립트(Javascript)를 활용하며, Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있는 특징을 가지고 있습니다.

 

내장 HTTP 서버 라이브러리르 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하며, 이를 통한 웹 서버의 동작에 있어 더 많은 통제에서 벗어나 여러가지 기능을 가능하게 합니다.

 

즉 Node.js 를 통해 웹어플리케이션이 더욱 발전하게 되었으며, 정적인 홈페이지 뿐만 아니라 쇼핑몰, 티켓 예메사이트, 블로그 등 data가 변하는 사이트를 만들 수 있으며, 여러 개발자들이 만든 프로그램과 게임을 웹상에서 구동시켜 안드로이드폰, 아이폰, 윈도우PC, 맥 등 플랫폼의 제약에 벗어나 어디든 상관없이 실행이 가능하게 해줍니다.

 

물론 단순히 웹에서 실행가능한 게임을 만들려면 javascript 만으로도 가능하지만 좀더 진화된 프로그램으로 실시간 온라인 채팅, 실시간 온라인 게임 등 실시간 기능을 넣거나, 로그인 기능을 넣어 유저를 관리하고 점수를 관리하는 데이터베이스 기능을 Node.js 를 통해 만들 수가 있습니다.

 

■ node.js 사용이유

Node.js 를 이해하려면 먼저 javascript를 배우셔야 합니다. 그 이유는 node.js는 javascript 기반으로 개조하여 만들어졌기 때문입니다.

 

Javscript는 C/C++, Java와 같은 프로그래밍 언어입니다. 하지만 이름에서 알 수 있듯이 Javascript는 독립적인 언어가 아니라 스크립트 언어입니다. 스크립트 언어는 특정한 프로그램 안에서 동작하는 프로그램이기 때문에 웹브라우저 프로그램 안에서만 작동을 하게 됩니다. 즉 웹브라우저(크롬, 파이어폭스, 사파리, 익스플로러 등등) 가 없으면 사용할 수 없는 프로그램이죠.

 

여기서 Node.js 가 나오는 이유가 됩니다. 즉 javascript를 웹 브라우저에서 독립시킨 것으로 Node.js를 설치하게 되면 터미널프로그램(윈도우의 cmd, 맥의 terminal 등)에서 node를 입력하여 브라우져 없이 바로 실행할 수 있습니다. 하지만 javascript에서 분리된 언어이기 때문에 문범은 같습니다. 이렇게 .node.js를 이용하여 웹브라우져와 무관한 프로그램을 만들 수 있게 되었고, 중요한 것은 node.js를 이용하여 서버를 만들 수 있다는 것입니다. 중요한 이유는 이전까지 server-clint 웹사이트를 만들 때 웹에서 표시되는 부분은 javascript를 사용하여 만들어야만 했으며, 서버는 ruby, java 등 다른 언어를 써서 만들어야 했는데, 마침내 한가지 언어로 전체 웹페이지를 만들 수 있게 된 것입니다.

'IT 용어 정리' 카테고리의 다른 글

MyBatis 란?  (0) 2019.09.26
NoSQL 이란?  (0) 2019.09.17
spring MVC 와 DispatcherServlet 의 정의  (0) 2019.09.14
front end와 back end의 정의  (0) 2019.09.13
AJP 란?  (0) 2019.09.13

출처) https://min-it.tistory.com/7

        https://mangkyu.tistory.com/18

 

■ spring MVC (Model View Controller) 

spring MVC는 웹 개발시 대부분으로 사용하는 모델2 방식의 구조이다. 모델2 방식이란 한마디로 표현하여 화면을 담당하는 View의 부분과 데이터를 처리하는 비즈니스 로직을 분리하여 생각한 개념이다. 디자이너와 개발자의 작업 분리가 되어있어 작업하기 편리하고 재사용이 가능한 구조이다.

 

MVC 가 뜻하는 의미는

M (Model) : 데이터를 처리하는 부분

V (View) : 화면을 담당하는 부분

C (Controller) : 요청을 처리하는 부분으로 뷰와 모델 사이의 통신역할을 담당

 

 

(Spring MVC DispatcherServlet) 출처:  https://min-it.tistory.com/7  [MIN-IT]

1. 클라이언트(사용자)의 모든 요청은 DispatcherServlet이 받는다.

 

2. DispatcherServlet은 hanlderMapping을 통해서 요청에 해당하는 Controller를

실행 시킨다.

 

3. Controller는 적절한 서비스 객체를 호출 시킨다.

 

4. Service는 DB처리를 위해  DAO를 이용하여 데이터를 요청 한다.

 

5.DAO는 mybatis를 이용하는 Mapper를 통해 작업 처리를 한다.

 

6. 결과(처리한 데이터)가 mapper->DAO->Service->Controller로 전달된다.

 

7. Contorller는 전달된 결과(처리된 데이터)를 View Resolver를 통해

전달 받을 View가 있는지 검색한다.

 

8. 전달 받은 View가 있다면 View에게 전달된 결과(처리된 데이터)를 전달한다.

 

9. View는 전달받은 결과(처리된 데이터)를 다시 DispatcherServlet에게 전달한다.

 

10. DispatcherServlet은 전달받은 결과(처리된 데이터)를 클라이언트에게 전달한다.

 

Front Controller는 서버로 들어오는 모든 요청을 받아서 처리한다. 공동처리 작업을 먼저 수행한 후 적절한 세부 컨트롤러에 작업을 위임해주고 예외시 일관된 방식으로 예외를 처리해주는 역할을 한다. 이와 같은 역할을 하기 때문에 각 컨트롤러 사이의 중복된 코드 문제나 협업시 개발자들의 개발 방식이 다른 경우 등을 해결할 수 있다.

 

 

■ DispatcherServlet

spring에서 정의한 Front Controller이다. 클라이언트에서 어떤 요청이 들어오면 톰캣과 같은 서블릿컨테이너가 요청을 받는데, 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 기능을 한다. MVC구조에서 함께 사용하는 패턴이다.

 

DispatcherServlet의 등장으로 web.xml의 역할이 상당히 축소되었는데, 기존에는 모든 서블릿에 대해 URL패밍을 활용하기 위해서 web.xml에 모두 등록해주어야 헀지만, DispatcherServlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주면서 작업이 상당히 편리하게 되었다. 

 

'IT 용어 정리' 카테고리의 다른 글

NoSQL 이란?  (0) 2019.09.17
node.js 란 무엇인가  (0) 2019.09.14
front end와 back end의 정의  (0) 2019.09.13
AJP 란?  (0) 2019.09.13
JDBC (Java Database Connectivity) 란?  (0) 2019.09.13

출처) https://itmemo.tistory.com/238

        https://ganzi-tilong.tistory.com/7

        https://joont.tistory.com/55

 

mod_jk를 알기전에 AJP를 먼저 알아야 할듯 함

 

■ AJP 란?

AJP는 웹서버(Apache) 뒤에 있는 어플리케이션 서버로부터 웹서버로 들어오늘 요청을 위임할 수 있는 바이너리 프로토콜이다.

 

어플리케이션 서버로 핑을 할 수 있는 웹서버의 모니터링 기능을 지원한다.

 

웹 개발자들은 대체로 AJP를 여러 웹서버로 부터 여러개 어플리케이션 서버로의 로드 밸런스 구현에 이용한다. 세션들의 각각의 어플리케이션 서버 인스턴스의 이름을 갖는 라우팅 메카니즘을 사용하는 현재 어플리케이션 서버로 리다이렉트된다. 이 경우 어플리케이션 서버를 위한 리버스 프록시로 웹서버는 동작한다.

 

■ mod_jk 란?

아파치, 톰캣 연동을 위해 mod_jk라는 모듈을 사용하는데, 이는 AJP프로토콜을 사용하여 톰캣과 연동하기 위해 만들어진 모듈이다. mod_jk는 톰캣의 일부로 배포되지만, 아파치 웹서버에 설치하여야 한다.

 

동작방식

1. 아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정한다.

2. 사용자의 브라우저는 아파치 웹서버(보통 포트80)에 접속해 요청한다.

3. 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인 후, 톰캣에서 처리해야 하는 경우 아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달한다.

4. 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려 준다.

5. 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송한다.

 

■ Apache와 Tomcat을 연동해야 하는 이유

Tomcat은 WAS 서버이지만 Web 서버의 기능도 갖추고 있는 WAS 서버입니다.

그러나 톰캣의 Web 서버 기능은 아파치보다 느린 속도처리를 보였고, 이로 인해 정적인 페이지는 Apache가 처리하고, 동적인 페이지를 Tomcat이 처리함으로써 부하를 분산하는 이유에서 Apache와 Tomcat을 연동하였습니다.

 

그러나 이는 옛날 얘기이고.. 지금은 Tomcat이 많이 발전해 Tomcat 내의 Web 서버가 아파치에 절대 뒤쳐지지

않을만큼의 역할을 수행합니다.

그럼에도 불구하고 아직도 Apache와 Tomcat을 연동하여 사용하는 이유는, 아파치 내에서만 설정할 수 있는 부분이라던가 아파치에서 제공하는 유용한 모듈들을 톰캣에서 사용할 수 없기 때문입니다.

 

'IT 용어 정리' 카테고리의 다른 글

NoSQL 이란?  (0) 2019.09.17
node.js 란 무엇인가  (0) 2019.09.14
spring MVC 와 DispatcherServlet 의 정의  (0) 2019.09.14
front end와 back end의 정의  (0) 2019.09.13
JDBC (Java Database Connectivity) 란?  (0) 2019.09.13

+ Recent posts