SQL 기본 용어 정리


가상 메모리 (Virtual Memory)

Windows 운영 체제에서 하드디스크(HDD)의 일부분을 메모리(Memory)처럼 활용하는 기능


고가용성(HA, High Availability)

제공하는 업무 또는 서비스의 중단이 최소화 될 수 있도록 구성된 정도 또는 구성된 상태


구성 함수

현재 구성에 대한 정보를 얻을 수 있는 함수입니다


기본 키(Primary Key)

각 행을 구분하는 유일한 열


내부 쿼리 (Inner Query)

서브 쿼리 문장 자체로도 직접 실행이 가능한 서브 쿼리 형태


데이터 가져 오기 (FETCH)

커서를 연 후 데이터를 한 행씩 가져 올 수 있도록 지정


데이터 정렬(ORDER BY)

정렬이란 특정한 열을 기준으로 선택된 데이터들을 순서대로 다시 배열(Sort)하는 것


데이터 정의 언어 (DDL, Data Definition Language)

데이터가 저장될 틀을 만들고 또 만들어진 틀을 변경하는데 사용되는 명령어


데이터 제어 언어 (DCL, Data Control Language)

데이터베이스의 각 구성 요소 별로 접근 권한을 제어하는 명령어


데이터 조작 언어 (DML, Data Manipulation Language)

데이터를 조회(SELECT)하고, 추가(INSERT), 변경(UPDATE) 및 삭제(DELETE)하는데 사용


데이터 처리

실제 읽어진 데이터를 처리하는 문장을 작성 하는 부분


데이터베이스

테이블들의 집합들이 모여 저장되는 저장소


로그 백업

트랜젝션 로그 백업이라고도 하는데 데이터에대한 변경사항이 아닌 로그파일(.ldf)을 백업


미러링 (Mirroring)

똑같은 데이터를 2개 또는 그 이상의 하드 디스크에 동시에 기록하고 보존하여, 한쪽의 데이터가 파손되거나 손상(corrupt)되어도 컴퓨터가 데이터의 분실 없이 작업을 계속할 수 있게 하는 처리방법


변수선언

커서 내에서 사용할 변수 이름을 지정하는 것


별칭 (AS)

동일한 대상을 가리키는 다른 이름


뷰(View)

가상의 테이블 이라고 할 수 있으며, 테이블처럼 물리적으로 디스크 공간을 차지하지 않고, 논리적으로만 존재


비클러스터 인덱스

책의 색인과 같이 데이터 자체에는 변동이 없고 인덱스 자체적으로 데이터의 위치를 저장하는 인덱스


사용자 정의 저장 프로시저

사용자가 직접 T-SQL 문장을 이용해 필요한 기능을 생성한 저장 프로시저


상관 서브 쿼리(Correlated Subquery)

외부 쿼리와 서로 연관되어 실행되는 서브 쿼리


서버 커서 (Server Side Cursor)

SQL Server 2005 상 에서 동작하는 커서로서 T-SQL 문장 형식을 이용하여 작성


서브 쿼리

다른 쿼리 명령어 안에 있는 쿼리 명령어


수치 연산 함수

수치 연산을 다루는 함수로 절대값, 자릿수 맞추기, 제곱근, 거듭제곱을 돌려주는 등 수와 관련된 함수를 가지고 있음.


스칼라 값 (Scalar Value)

물리학에서 사용되는 용어로, 방향을 가지고 있지 않고 크기만 가지고 있는 물리량을 뜻함. 크기를 나타낸 수에 단위를 붙여 그대로 사용하며, 질량이나 온도 등이 이에 속함. SQL Server 2005 에서는 숫자 값과 짧은 문자열 정도를 스칼라 값이라고 칭함.


스칼라 값 함수

사용자 정의 함수의 종류로서 스칼라 값 함수는 숫자값, 문자열 등의 스칼라 데이터 형식을 되돌려 주게 됨


시스템 저장프로시저

SQL Server를 관리하기 위해서 SQL Server 시스템에서 기본적으로 제공해주는 저장 프로시저


시스템 함수

시스템 함수는 SQL Server에서 제공하고 있는 함수로서 우리가 수정하거나 삭제할 수 없음


식별자

데이터베이스, 테이블, 열 등과 같은 개체들을 구분할 수 있는 이름


열(Column)

각 테이블은 열로 구성


예약어

예약어는 데이터 정의 언어 (DDL, Data Definition Language), 데이터 조작 언어 (DML, Data Manipulation Language), 데이터 제어 언어 (DCL, Data Control Language) 에 속하는 모든 명령어


웹 서버 (WEB Server)

인터넷의 WEB 기반 서비스를 제공해 주는 소프트웨어(Software)를 말함. 예를 들어 Internet Explorer 프로그램으로 Naver WEB사이트에 접속 할 때 Naver 서버 측의 웹 서버 소프트웨어가 응답을 해주게 됨.


유니코드

컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드


이진

0과 1만으로 된 체계를 말한다. 컴퓨터는 모든 데이터를 0과 1 코드로 이진 체계를 이용하여 데이터를 처리


인덱스

데이터들이 어디에 있는지에 대한 정보를 담고 있는 작은 공간


인스턴스(instance)

SQL Server 프로그램은 하나지만, 마치 여러 개의 SQL Server가 운영 중인 것처럼 구성 할 수 있음. 하나의 SQL Server를 여러 개의 인스턴스로 나누어 구성하여 서비스 할 수 있다는 의미


장애조치(Fail-Over)

H/W 또는 서비스의 예상치 못한 장애 발생 시 다른 자원을 통해 서비스가 제공 되도록 조치하는 일련의 활동


저장 프로시저

자주 사용되는 T-SQL 쿼리 문장을 별도의 이름으로 저장하여 필요할 때마다 호출하여 사용할 수 있도록 구성한 것


전체 백업

데이터베이스의 전체를 백업 하는 것


주석문

주석처리가 된 해당 쿼리문을 인식하지 않도록 할 때 사용


집계 함수

데이터의 평균이나 합계 등을 구하는 데에 사용하는 다양한 함수


차등 백업

마지막 전체 백업 이후에 변경된 모든 데이터를 백업하는 것. 반드시 전체 백업을 받은 후에 수행.


커서 선언 (DECLARE)

커서의 이름과 어떻게 사용 될지를 정의 하는 부분


커서 열기 (OPEN)

선언된 커서를 열도록 지정 하는 부분


커서 할당 해제

선언된 커서의 할당을 해제


커서(Cursor)

단위 별로 반복적인 데이터 가공 작업이 필요한 경우에 사용


클라이언트 커서 (Client Side Cursor)

Web 서버 등 SQL Server 2005 입장에서 보았을 때 데이터를 요청하는 클라이언트(Client) 에서 동작하는 커서


클러스터 인덱스

사전과 같이 실제 데이터 자체가 인덱스의 순서와 동일하게 정렬되어 있는 인덱스


클러스터링 (Clustering)

고가용성(HA)을 제공 하기 위해 장애조치(Fail-Over)가 가능 하도록 시스템 구성을 설계하고, 구축하는 활동 또는 구축된 상태


테이블

회원과 제품의 데이터를 저장하기 위한 표 형태의 틀


테이블 값 함수

사용자 정의 함수의 종류로서 되돌려 주는 결과 값이 테이블인 함수


트랜젝션 (Transaction)

데이터에 변경을 가하는 묶음 단위를 칭함. 한 건의 변경이 하나의 트랜젝션이 될 수도 있고, 여러 건의 변경을 하나의 트랜젝션으로 묶을 수도 있음


트랜젝션 로그 (Transaction Log)

발생된 트랜젝션에 대한 일련의 기록. 즉 데이터가 변경된 이력을 트랜젝션 단위로 기록한 이력


트리거

어떠한 이벤트가 발생할 때 자동적으로 실행되게 하는 일종의 저장 프로시저


함수

사용 하려고 하는 용도에 맞는 기능을 프로그램화 하여 T-SQL 문에서 필요할 때마다 호출하여 사용할 수 있는 것


행(row)

테이블을 구성하고 있는 실질적인 데이터


확장 저장프로시저

데이터베이스에서 직접 구현하기 힘든 어려운 기능을 C언어를 통해서 구현되어진 저장프로시저


확장자

파일 종류를 구별하기 위하여 파일명 중 맨 마지막의 마침표 뒤에 붙이는 문자


CLR (Common Language Runtime, 공용 언어 런타임)

어플리케이션 프로그램 개발에 사용 되는 서로 다른 언어(Language)들을 공통으로 실행 시킬 수 있도록 해주는 기반 환경


Cache (캐시)

일반적으로 빠른 명령 처리를 하기 위해 자주 쓰이게 될 데이터 들은 속도가 빠른 메모리에 미리 저장 하고 있는 것


HTTP (Hyper Text Transfer Protocol)

인터넷에서 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약


IIS (Internet Information Service)

Microsoft에서 만든 웹 서버 소프트웨어(Software)로 Windows 서버 O/S에 내장되어 제공


INNER JOIN

가장 대표적인 JOIN 방식이며 ON 절을 통하여 지정한 조건에 맞는 데이터만을 골라서 보여줌


JOIN

두 개 이상의 테이블에서 조건에 맞는 자료들을 가져와 하나의 결과 집합으로 보여주는…


MDAC(Micro Data Access Component)

클라이언트 개인용 컴퓨터(PC)와 서버 데이터베이스를 연결하는 마이크로소프트(Microsoft)의 '데이터베이스 드라이버 모음


MULTI_USER 모드 (다중 사용자 모드)

데이터베이스의 디폴트 모드로서 데이터베이스에서 접근 가능한 사용자 명을 가진 사람이면 누구든지 데이터베이스에 연결할 수 있다는 것.


master

SQL Server 2005 구동을 위해 가장 중요한 데이터 베이스 입니다. DBMS 전반의 설정 정보와, 데이터 베이스 구성 정보, 계정 정보 등 중요한 목록이 저장


model

사용자 들이 데이터베이스를 새로 만들 때 기본 틀이 되는 데이터베이스


msdb

SQL Server 2005의 구성 요소 중 하나인 SQL Server Agent가 사용하는 데이터베이스


OUTER JOIN

ON 절을 통하여 지정한 조건에 맞는 데이터를 고르되 기준으로 지정된 테이블 열에 있는 데이터를 기준으로 JOIN 된 행을 모두 조회하고 값이 없는 경우 NULL 로 표시하여 출력


RESTICTED_USER 모드 (제한적 사용자 모드)

db_owner 역할 및 dbcreator와 sysadmin 멤버만 데이터베이스에 연결할 수 있음. 접근할 수 있고 수에는 제한이 없음.


SINGLE_USER 모드 (단일 사용자 모드)

한 명의 관리자에 의해 한 개의 연결만을 가질 수 있다는 것


SQL Server

Microsoft(마이크로소프트)에서 출시한 관계형 DBMS 제품


sa 계정

System Administrator의 약자로 SQL Server 2005의 전체 기능을 총괄 할 수 있는 사용자


T-SQL

마이크로소프트의 SQL Server에서 사용되는 SQL 언어


tempdb

이름 그대로 SQL Server 2005가 임시로 사용하는 데이터베이스


UNION

두 쿼리 명령어의 결과로 나온 결과 집합을 하나로 합쳐서 출력하는 데에 사용


UNION ALL

UNION 과 동일하나 중복된 데이터를 제거하지 않고 그대로 보여줌

'Develop > DB - mssql' 카테고리의 다른 글

테이블에서 길이가 가장 긴 컬럼 찾기  (0) 2018.02.06
MS-SQL 테이블 복사  (0) 2018.02.02
DELETE vs DROP vs TRUNCATE  (0) 2016.12.27
데이터 형식 우선 순위(Transact-SQL)  (0) 2016.12.21
char vs varchar vs nvarchar  (0) 2016.12.21

DELETE vs DROP vs TRUNCATE

TABLE에서 행을 삭제하는 세 가지 방법이 있다.  DELETE, DROP, TRUNCATE 의 3가지 방법이 있는데 각각에 대해서 알아본다. 


결론부터 말하자면,

Delete : 데이터만 삭제하고 Commit이전에는 Rollback이 가능하다. 데이터를 모두 Delete해도 사용했던 Storage는 Release되지 않는다.

DROP : 테이블의 정의 자체를 완전히 삭제함하고 Rollback 불가능하다. 또한, 테이블이 사용했던 Storage를 모두 Release 한다.

Truncate : 테이블을 최초 생성된 초기상태로 만들고, Rollback 불가능하다. 테이블이 사용했던 Storage중 최초 테이블 생성시 할당된 

Storage만 남기고 Release 된다.


 방

장점

단점 

 DELETE(DML)

원하는 데이터 삭제

테이블의 용량 감소X 

 TRUNCATE (DDL)

테이블 자료들 모두 삭제 

원하는 데이터만 삭제불가능, 복구가 굉장히 힘듬

 DROP (DDL)

이블 자체의 삭제


1. DELETE

DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다. 

DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제 될 때마다 많은 SYSTEM 자원이 소모된다.

예를 들어 CPU 시간,REDO LOG 영역,  TABLE이나 INDEX에 대한 ROLLBACK SEGMENT 영역 등의 자원이 필요하다. TRIGGER가 걸려있다면 각 행이 삭제될 때 실행된다. 이전에 할당되었던 영역은 삭제되어 빈 TABLE이나 CLUSTER에 그대로 남아 있게 된다.

사용법 : DELETE FROM 테이블명 (WHERE 조건) 조건은 생략가능

 

2. DROP

TABLE을 삭제한 다음 재생성할 수 있다. TABLE이나 CLUSTER를 삭제하고 재생성하면 모든 관련된 INDEX, CONSTRAINT,TRIGGER도 삭제되며, 삭제된 TABLE이나 CLUSTERED TABLE에 종속된 OBJECTS는 무효화 된다. 삭제된 TABLE이나 CLUSTERED TABLE에 부여된 권한도 삭제된다.

사용법 : DROP TABLE 테이블명

 

3. TRUNCATE 

SQL명령어 TRUNCATE를 사용하여 TABLE의 모든 행을 삭제할 수 있다. TRUNCATE 명령어는 TABLE이나 CLUSTER에서 모든 행을 삭제하는 빠르고 효율적인 방법이다. TRUNCATE 명령어는 어떤 ROLLBACK 정보도 만들지 않고 즉시 COMMIT하고, DDL 명령문으로 ROLLBACK될 수 없다.

TRUNCATE 명령문은 잘라 버릴 TABLE과 관련된 구조(CONSTRAINT, TRIGGER 등)과 권한에 영향을 주지 않고, TABLE에서 ROW를 삭제하면 해당 TABLE에 걸려 있는 TRIGGER는 실행되지 않는다.

AUDIT 기능이 ENABLE되어 있으면, TRUNCATE 명령문은 DELETE 문에 해당하는 AUDIT 정보를 생성하지 않는다. 대신 발생한 TRUNCATE 명령문에 대한 단일 AUDIT RECORD를 생성한다.

TRUNCATE TABLE 테이블명


'Develop > DB - mssql' 카테고리의 다른 글

MS-SQL 테이블 복사  (0) 2018.02.02
SQL 기본 용어 정리  (0) 2016.12.28
데이터 형식 우선 순위(Transact-SQL)  (0) 2016.12.21
char vs varchar vs nvarchar  (0) 2016.12.21
DB 백업 종류  (2) 2016.12.07

애자일(Agile) 개발 프로세스



애자일(Agile)은 '민첩한', '생각이 재빠른, 기민한' 이라는 사전적인 의미를 갖고 있다. 애자일 개발(Agile development) 역시 이와 크게 다르지 않다. 애자일 개발은 변화에 신속하고 유연하게 대응하는 개발 방법론을 가리키는 말이다.


애자일 개발 프로세스와 전통적인 개발 프로세스와의 차이

전통적인 개발 프로세스들은 폭포수 모델과 계획 기반 개발을 따르는 반면, 애자일 개발 프로세스는 그에 반한다는 점에서 가장 큰 차이를 가진다.


항목 

에자일 개발 방법 

전통적인 개발 방법 

계획수립의 상세수준 

바로 다음 반복주기에 대해서만 상세한 계획 수립 

다음에 이어지는 단계에 이르기까지의 산세한 계획수립 

요구사항의 베이스라인 

요구사항에 대한 베이스라인 설정을 강조하지 않음

요구사항 정의 단계에서 모든 요구사항을 Finalize할 것을 강조 

아키텍처의 정의 방법 

실제 개발된 기능 구현을 통하여 빠른 시간 내에 아키텍처의 실현 가능성을 증명해 보이고자 함 

모델과 사양을 보다 상세화하는 과정을 통해 어플리케이션과 데이터 아키텍처를 초기에 정의하고자 함 

테스트 방법 

잦은 "개발-테스트"죽;를 통하여 많은 시간과 비용이 들어가기 전에 기능을 검증함 

특정기능이 구현되고 나서야 단위-통합-시스템으로 확장해 나가는 방식을 취함 

표준 프로세스의 적용 

정의되고 반복적으로 수행되는 프로세스를 강조하지 않는 대신에 잦은 Inspection을 토대로 프로세스를 개발해 유연하게 적용하는 것을 강조 

개발에 들어가기 전에 표준화된 프로세스를 제정하는 것을 중시 


 

폭포수 모델과 계획 기반 개발 기법들은, 일련의 차례와 탄탄한 계획을 기반으로 하여 개발을 진행시킨다. 이것은, 이해하기도 쉽고 사용하기도 쉬운 바람직한 기법이기도 하지만, 이로 인해서 많은 부작용이 생길 수 있다. 가장 큰 부작용이 발생할 때는, 계획대로 진행되지 않을 경우이다. 이럴 경우에는 다음과 같은 부작용이 발생하게 된다.

‧ 납기일 전 철야

‧ 철야에도 불구하고 납기일 지연

‧ 지연에 따른 비난과 스트레스가 개발자에게 향하여 에너지 소진

‧ 결국 납품된 솔루션은 고객의 요구를 충족하지 못함

 

이런 부작용은 근본적인 개발 프로세스 접근법의 차이에서 나타난다. 전통적인 개발 프로세스들은 공업에서 사용하는 정형적 프로세스 제어 모델을 따르고 있다. 정형적 프로세스 제어모델은, 동일한 입력에 대해서 동일한 결과가 기대 될 경우에 적합하다. 하지만, 소프트웨어를 포함한 IT의 개발은 경험적 프로세스 제어 모델로 접근할 필요가 있다. 경험적 프로세스 제어 모델은 항상 불확실성을 수반하고 포용하고 있다. 애자일 개발 프로세스는 경험적 프로세스 제어모델로 개발을 관리한다. 


애자일 개발 프로세스 종류

1. 익스트림 프로그래밍(Extreme Programing, XP) 

애자일 개발 프로세스의 대표자로 애자일 개발 프로세스의 보급에 큰 역할을 하였다. 이 방법은 고객과 함께 2주 정도의 반복개발을 하고, 테스트와 우선 개발을 특징으로 하는 명시적인 기술과 방법을 가지고 있다.


2. 스크럼 

30일마다 동작 가능한 제품을 제공하는 스플린트를 중심으로 하고 있다. 매일 정해진 시간에 정해진 장소에서 짧은시간의 개발을 하는 팀을 위한, 프로젝트 관리 중심의 방법론이다.


3. 크리스털 패밀리

이 방식은 프로젝트의 규모와 영향의 크기에 따라서 여러종류의 방법론을 제공한다. 그중에서 가장 소규모 팀에 적용하는 크리스털 클리어는 익스트림 프로그래밍 만큼 엄격하지도 않고 효율도 높지 않지만, 프로젝트에 적용하기 쉬운 방법론이다.


4. Feature-Driven Development 

feature마다 2주정도의 반복 개발을 실시한다. Peter Coad가 제창하는 방법론으로써, UML을 이용한 설계 기법과도 밀접한 관련을 가진다.


5. Adaptive Software Development, ASD 

소프트웨어 개발을 혼란 자체로 규정하고, 혼란을 대전제로 그에 적응할 수 있는 소프트웨어 방법을 제시하기 위해 만들어진 방법론이다. 내용적으로는 다른 방법론들과 유사하지만, 합동 애플리케이션 개발(Joint Application Development, 사용자나 고객이 설계에 참가하는 개발 방법론)을 사용하고 있는것이 조금 다르다.


6. 익스트림 모델링 

익스트림 모델링은 UML을 이용한 모델링 중심 방법론이다. 다만, 여타 모델링 방법들과는 달리, 언제나 실행할 수 있고 검증할 수 있는 모델을 작성하는 공정을 반복해서, 최종적으로는 모델로부터 자동적으로 제품을 생성하게 한다.

(출처 : 위키백과)

'Develop' 카테고리의 다른 글

개인 업무 일지  (0) 2018.05.14
주요 리눅스 명령어  (0) 2016.12.29

Android 프로젝트 생성 및 에뮬레이터 실행

 

1. Andorid Studio 실행 (첫 실행이라 그런지 아래와 같은 화면이 출력됨)

 

2. 입맛대로 하시면 될듯 저는 Custom

 

3. Darcula 로 선택했어요.

 

4. 피시에서 사용하는 에뮬레이터가 필요하면 아래 'Android Virtual Device' 체크 후 Next

 

 

6. Start a new Android Studio project

 

7. Application name : 어플 이름 입력

   Company Domain : 어플이름이 같을경우 도메인으로 구분하기 위해 (아마도 맞을거에요 ㅎㅎ)

   Project location : 프로젝트 파일 경로

 

8. Phone and Tablet 전용 어플을 만들거니 그것을 선택하고 Next

 

9. 최초 생성되는 Activity 형태 선택 후 Next

 

10. 적당한 이름 입력 후 Finish

 

11. 삼각형 모양 클릭 (가상 Android 기기 실행)

 

12. 상당히 오래 기다리면 아래와 같은 화면이 출력되면 성공 (저는 5분 정도 기다린듯 ㅎㅎ)

Android 스튜디오 다운로드 및 설치

 

저는 이상하게 IE로 하니깐 진행이 안되서, 크롬으로 진행 했습니다.

 

1. 다운로드 사이트 접속 : https://developer.android.com/studio/index.html

 

 

 

2. 동의 후 다운로드

 

 

 

3. 설치 진행 (모두 디폴트로 진행)

 

 

 

 

 

 

 

 

 

 

 

데이터 형식 우선 순위(Transact-SQL)

연산자로 데이터 형식이 다른 두 식을 결합할 경우 데이터 형식 우선 순위 규칙에 따라 우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 변환된다. 이때 변환이 암시적으로 지원되지 않으면 오류가 반환됩니다. 피연산자 식이 같은 데이터 형식일 경우에는 연산 결과도 같은 데이터 형식이 된다.

SQL Server에서는 데이터 형식에 다음 우선 순위를 사용한다.

  1. 사용자 정의 데이터 형식(가장 높음)

  2. sql_varian t

  3. xml

  4. datetimeoffset

  5. datetime2

  6. 날짜/시간

  7. smalldatetime

  8. 날짜

  9. 시간

  10. 부동 소수점

  11. 실제

  12. 10 진수

  13. 비용

  14. smallmoney

  15. bigint

  16. int

  17. smallint

  18. tinyint

  19. 비트

  20. ntext

  21. text

  22. image

  23. 타임 스탬프

  24. 고유 식별자

  25. nvarchar (포함 하 여 nvarchar (max) )

  26. nchar

  27. varchar (포함 하 여 varchar (max) )

  28. char

  29. varbinary (포함 하 여 varbinary (max) )

  30. 이진 (최소)


출처  : https://msdn.microsoft.com/ko-kr/library/ms190309.aspx

char vs varchar vs nvarchar


문자열 자료형에는 크게 String과 char가 있다.

저번에 String에 대해서 했으니 이번엔 char에 대해서 알아본다. 


간단하게 말하자면,

 

 char

varchar

nvarchar 

특징

고정 값

변동 값 

변동 값 

예시

주민등록번호, 사번

주소, 과목명

이름, 지명 

특이사항 


 

유니코드 문자열


Keyboard Event 제어 Backspace 막기

 

회원가입을 하다 보면 Backspace 키를 누르는 경우가 많은데, Backspace 키를 누르다가 뒤로가기가 되어서 회원가입을 포기 하는 경우가 많다. 그래서 뒤로가기를 방지 하는 방법을 제어해 보고자 한다.

 

아래와 같이 코딩할 경우 뒤로가기가 먹히지 않는다.

 

위의 소스 첨부

Key Event 제어 Backspace 막기.txt

 

'Develop > Javascript' 카테고리의 다른 글

Cross Domain  (0) 2017.01.09

Web server vs WAS

웹서버와 was를 알아보자


차이점부터 설명하면,

웹서버는 프로토콜을 이해하고 클라이언트와의 통신을 주로하고 웹서버로 들어온 요청을 웹어플리케이션 서버로 넘겨주는 역할을 하고,

WAS는 넘겨받은 요청을 내부적인 연산을처리후 출력할내용을 웹서버로 전달하면 웹서버는 다시 클라이언트로 전송하는 역할을 한다.


더 간단하게 표로 보자면 다음과 같다.


 

설 명 

 웹 서버

Web Client(웹 브라우저)에게 제공하는 컨텐츠를 제공하는 서버

정적인 HTML 혹은 jpeg나 gif같은 이미지를 HTTP프로토콜을 통해 웹 브라우저로 제공.

 WAS

Server단에서 어플리케이션을 동작할 수 있도록 지원

일반적으로 컨테이너라는 용어로 사용됨

Servlet, JSP, ASP, PHP 등의 프로그램으로 사용됨


하나씩 살펴보면,

웹 서버 (Web Server)란?

인터넷 상에서 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지들을 보내주는 역할을 하는 프로그램이다. 간단히 말하면 HTTP 요청에 따라 서버에 저장되어 있는 적절한 웹페이지를 클라이언트에게 전달하는 것입니다. 웹 페이지 뿐만 아니라 그림, 스타일 시트, 자바스크립트도 해당한다.


주로 서버에 있는 리소스를 전달하는게 주된 기능이기도 하지만, 클라이언트로부터 콘텐츠를 받는 것도 웹 서버 기능에 포함한다.


웹 서버에는 다음과 같은 종류가 있다.

제품명

제작사

최신 버전

라이선스

아파치

Apache 재단

2.4.4

오픈소스

IIS

마이크로소프트

8.0

상용(윈도우 서버 사용시 무료)

nginx

NGINX, Inc

1.5.1

오픈소스

GWS

구글

 




웹 애플리케이션 서버 (Web Application Server/WAS)란?

인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어라고 한다. 줄여서 WAS라고 한다. Servlet, ASP, JSP, PHP 등의 웹 언어로 작성된 웹 애플리케이션을 서버단에서 실행된 후 실행 결과값을 사용자에게 넘겨주게 되고, 우리가 가진 브라우져가 결과를 해석해서 화면에 표시하는 순으로 동작을 한다.


웹 애플리케이션 서버는 다음과 같은 3가지 기본 기능을 가지고 있다. 

  - 프로그램 실행 환경과 데이터베이스 접속 기능을 제공

  - 여러 개의 트랜잭션을 관리

  - 업무를 처리하는 비즈니스 로직 수행


그러나 웹 애플리케이션 서버의 명확한 정의가 존재하지 않아 일부 기능만 가진 웹 애플리케이션 서버도 있습니다. 웹 애플리케이션 서버는 다음과 같은 종류들이 있다. 


제품명

제작사

최신 버전

라이선스

제우스

한국 티맥스소프트

7.C

상용

웹로직

미국 오라클

10.3.6

상용

웹스피어

미국 IBM

7.C

상용

레진

미국 Caucho

4.0.7

상용

글래스피시

미국 오라클

3.1.2.2

오픈소스(CDDL,GPL)

제이보스

미국 레드햇

7.1.0.CR1b

오픈소스(LGPL)

인터스테이지

일본 후지쯔

9.0.0

상용

아파치 톰캣

Apache 재단

7.0.41

오픈소스

레진(Resin)

Caucho

4.0

상용

제이런(Jrun)

Adobe

4.0

상용

Winstone Servlet Container

Rick Knowles

0.9.10

오픈소스

Jetty

Eclipse 프로젝트

3.0

오픈소스


웹 서버와 웹 어플리케이션 서버의 차이 및 구성

위에서 설명한 각 서버에서 보듯이 기능적인 차이로 구분을 지어 사용다. 웹 서버는 정적 데이터를 처리하는 용도로, 웹 애플리케이션 서버는 동적 데이터를 처리하는 용도로 사용한다. 하지만 톰캣의 경우처럼 웹 애플리케이션 서버에 웹 서버 기능을 포함된 서버 프로그램도 존재한다. 간단히 집에서 웹서버 기능이나 웹 애플리케이션을 이용하고자 한다면 톰캣만 설치해도 된다. 반대로 웹 서버에서 내부에 애플리케이션을 동작할 수 있는 기능을 내장하기도 한다. 간단한 웹 사이트를 구축한다면 웹 서버와 웹 애플리케이션 서버를 구분 지어 사용할 필요가 없고 톰캣 하나만 설치하면 된다.


웹 서버와 웹 애플리케이션 서버 구성

1. 스위치 - WAS

웹 사이트의 가장 기본적인 구성 환경이다. 모든 컨텐츠를 WAS에 모아 놓고, WAS가 웹서버와 웹 애플리케이션 서버 역할을 동시에 수행한다. 트래픽이 많지 않고, 간단한 웹 사이트 서비스를 제공하거나, 개발 및 테스트 시스템 구성시 활용하기도 한다. 


스위치로 로드밸런싱을 하기 때문에 쉽게 다른 WAS를 설치하여, 부하를 분산 시킬 수 있는 장점이 있는 반면에, WAS가 웹서버와 웹 애플리케이션 서버 역할을 동시에 수행하기 때문에 각각의 기능이 다른 기능 수행시 부하를 발생 시킬 수 있기 때문에 성능 저하가 나타날 수 있는 단점을 가지고 있다.


2. 스위치 - 웹 서버 - WAS

웹 서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도한 형태라고 한다. 정적인 데이터는 웹 서버가, 동적인 데이터는 WAS가 담당하게 함으로써 간단한 1번 구조보다 더 나은 성능을 발휘 한다. 


3. (스위치 - 웹 서버 - WAS) + 이미지를 위한 웹 서버

미디어의 발전으로 페이지는 네트워크 비중의 상당 부분을 차지한다. 그래서 고화질 이미지나 동영상 데이터 제공을 위한 웹서버를 따로 추가하여, 기존 네트워크 비중도 줄이고, 기존의 웹 서버와 WAS를 좀 더 효율적으로 사용할 수 있도록 하는 구성이다.


이러한 구조는 다양한 환경의 대한 네트워크 이슈를 좀 더 용이하게 대처할 수 있지만, 구조를 정확하게 이해하지 않았을 경우 개발 및 테스트에 많은 시간이 소요 된다.


4. 스위치 - 웹 서버 - WAS(프리젠테이션) - WAS(비즈니스) 

WAS단의 프로그램들이 많은 비중을 차지할 때, Presentation Logic을 담당하는 프로그램과 Business Logic을 담당하는 프로그램을 구분하여 각각의 WAS가 처리하도록 분리하는 형태이다. 


이러한 구조는 계층 구조의 부하를 적절히 분산할 수 있는 반면, 구조가 복잡해 유지보수가 어려워지는 단점을 가지고 있다.


'Develop > Web' 카테고리의 다른 글

서비스 port 리스트  (0) 2016.11.16
[HTML 속성] id와 name 속성의 차이  (0) 2016.11.03
Web - http method  (0) 2016.10.31

Dispose/Finalize 

Dispose/Finalize 차이는 소멸자 호출 여부이다.


.net은 GC(Garbage Collector)에서 메모지(자원)을 관리한다. 개발자가 직접적으로 관리를 원할 경우에 사용하는 것이다.


간단하게 말하자면

Dispose : USING과 호환되며 주로 File, Database 호출 밎 조작할때 사용된다. Dispose에서는 GC에서 지우기는 하지만 소멸자 호출을 하지 않는다. 

차후 GC가 알아서 관리하면서 호출하는 것 같다.


Finalize : Destructor를 호출해서 완전하게 메모리에서 지운다.


1
2
3
4
5
6
7
8
try{
((IDisposable)this).Dispose();
}
catch
{ }
  
GC.SupressFinalize(this);
</span>



좀 더 자세하게 들어가자면 소멸자를 이해하기 전에 객체와 메모리에 대해서 알아야한다.


객체와 메모리

객체 생존 기간

객체는 new 연산자에 의해 메모리를 할당 하고 생성자에 의해 메모리에 있는 객체가 초기화 된다.

반대로 소멸되는 경우에는 먼저 Finalize 메소드를 이용하여 메모리를 초기화 되지 않은 상태로 돌린다.


다음으로 이메모리 공간을 Heap에 반환하는 것이다. 그러므로 객체의 존속기는 new를 이용하여 메모리를 할당받는 순간부터 메모리를 Heap에 반환 할 때 까지이다.



GC(Garbage Collector)

C#의 경우 기존의 C/C++ 처럼(new, delete) 프로그래머가 메모리 관리를 하지 않아도 된다.

CLR에서 자동으로 알아서 소멸 시켜 준다. 또한 C#의 경우 명시적으로 코드상에서 객체를 소멸 할 수 없는 대신 Garbage Collector라는 것을 지원 해 준다. 


Garbage Collector는 메모리에 있는 참조가 끝난 객체를 쓰레기 치우는 것처럼 소멸 시키는 역할을 하는 것 이다. 

메모리가 부족 하다고 판단이 들면 Garbage Collector는 참조되는 않는 객체의 메모리 영역을 청소하여 Heap에 반환을 하는 것이다. 


또한 Garbage Collector는 객체를 오직 한번만 제거해 버리며 참조되고 있지 않은것들만 제거 한다. 프로그래머다 일일이 코드를 통해 기술 했을때의 문제인 객체를 반복해서 소멸 한다든지, 참조되고 있는객체를 소멸한다든지 하는것은 막아 주는 것이다. 

코딩 상에서 Garbage Collector에거 명시적으로 객체를 소멸 시켜 달라고 할 수 있으나 그것은 객체를 소멸 시켜도 된다는 것을 알리는 역할을 할 뿐이지 즉시 작동 하는 것은 아니다.


'Develop > C#' 카테고리의 다른 글

박싱과 언박싱  (0) 2016.12.07
using  (0) 2016.12.01
프로젝트 exe 파일(Release 버전) 생성  (1) 2016.11.15
ListBox items Random 함수 사용  (0) 2016.11.15

+ Recent posts