Study/IT 이야기

[IT 용어] 존나게 많은 IT용어 중의 일부분

AC 2021. 3. 14. 00:37

 

 

SVN + CVS

: 소스파일이나 프로젝트를 관리해주는 서버와 클라이언트로 구성된

  통합 프로그램이라고 할 수 있다.

  소스를 저장하고 소스가 변경되는 시점들을 기억하여 프로젝트를 관리하는데 있어

  중요한 역할을 하게 된다.

 

 

SVN(Sub version System)

: 형상관리/소스관리 툴

  사용목적 : 여러명이서 작업하는 프로젝트의 경우 버전관리나 각자 만든 소스의

  통합과 같은 문제를 해결하기 위해 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나

  여러 문제를 해결하기 위한 Software이다.

 

Repository : 프로젝트 파일 및 변경 정보가 저장되는 장소

import : 빈 Repository에 맨 처음 파일을 채우는 것

Export : 버전 관리 파일들을 뺀 순수파일만 빼내는 것

Checkout : 저장소에서 최신 버전의 소스코드를 최초로 받아오는 것/Repository에서

프로젝트 관련 파일들을 받아온다.

Update : 로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아오기

Commit : 로컬 저장소의 변경된 내용을 서버로 전송/CheckOut한 파일의 수정사항을 갱신

Revert : 로컬 저장소의 내용을 이전 상태로 돌

Add : 버전관리 대상으로 파일 등록

Trunk : 개발 소스를 Commit했을 때 개발 소스가 모이는 곳/ 프로젝트에서 가장 중심이 되는

디렉토리, 소스와 파일 포함

Branch : Trunk에서 분리/복사한 소스로 버전별 배포판을 만들거나 trunk와 별도로

운영환경을 위한 안정화된 소스 관리 목적으로 사용

 

Tag : 특정시점의 상태 보존 목적으로 사용 장기적으로 1.0, 1.1 등 버전 별로 소스코드를 따로 저장

특정 시점에서 프로젝트의 스냅샷을 찍어두는 것

 

 

 

CVS(Concurrent Version System) 동시 버전 시스템

: 버전관리 툴

  S/W 프로젝트를 진행할 때, 파일로 이루어진 모든 작업과 모든 변화를 추적하고,

  여러 개발자(지역적으로 떨어진)가 협력하여 작업할 수 있게 한다.

  CVS는 GNU 일반 공중 사용 허가서 하에서 배포된다. CVS는 오픈 소스 프로젝트에서

  널리 사용되었다. 현재는 CVS가 한계를 맞아, CVS를 대체하는 서브버전이(SVN) 개발되었다.

 

  팀단위로 S/W 개발하기 위해서는 소스 코드를 공유할 필요가 있다.

  가장 간단한 방법은 소스코드의 공유폴더를 만들고 소스파일을 넣어둔 다음

  파일 복사하여 코드를 추가/수정 후 다시 공유폴더로 덮어씌우는 방법이다.

 

  이용하기 위해서는 다음과 같은 절차가 필요하다.

  -CVS서버를 구축

  -CVS클라이언트에서 CVS서버를 엑세스

 

 

 

  ■ History : CVS클라이언트를 통해서 서버로 전송한 시점마다 기록을 남긴다.

  ■ Delta Compression :  원본파일에서 수정되는 소스들의 각파일별 차이점만을

  저장하여 용량을 줄임

  ■ Branch : 같은 프로젝트라도 요구하는 환경에 따라 별도의 프로젝트로 따로 관리

  되는 분점을 만들 수 있음.

  ■ Tag : 프로젝트의 특정 시점을 version별로 Taging하여 각 시점마다 versioning을

  할 수 있다.

  ■ diff : 소스들간에 서로를 비교해서 어떤점이 달라졌는지 차이점을 비교할 수 있다.

  ■ checkout : 서버에 있는 소스를 로컬에 복사

  ■ conflict : 서버와 로컬의 같은 소스가 수정되어 있는 자동 수정이 불가능한 상태

  충돌이 발생한 파일은 수동으로 합병한다.

  ■

 

COMMIT

: 로컬 파일을 CVS서버에 덮어쓴다

UPDATE

: CVS의 파일을 로컬에 덮어쓴다.

OVERRIDE AND UPDATE

: 로컬을 무시하고 그대로 CVS에 있는 파일을 내 로컬로 덮어쓰겠다는 말.

 

WAS(Web Application Server)

 

: WAS를 작성할 줄 안다고 한다면 자바로 기업용 App을 개발하기 위한

J2EE라는 표준을 잘 이해하고, 그 표준에 맞추어 자바 프로그램을 작성할 줄 아는 사람

 ■ Servlet -> 웹으로부터의 요청을 받아 필요한 결과 화면을 만들어내는 기본 API

 ■ JSP -> Servlet 코딩을 최대한 줄이고 HTML 형태의 태그를 사용하여 개발하기 위한 표준 API

 ■ JDBC -> 각종 데이터베이스에 접속하여 처리하기 위한 표준 API

 

WAS 명               특징

  ■ Tomcat      |   Servlet Container

  ■ JEUS        |   Servlet Container, EJB Container

  ■ Weblogic    |   Servlet Container, EJB Container

  ■ Websphere   |   Servlet Container, EJB Container

  ■ Resin       |   Servlet Container

  ■ IIS         |   JAVA WAS가 아님

 

Web Application? 웹을 기반으로 실행되는 프로그램을 의미

 

웹브라우저     1. 요청

웹 서버        2. 처리를 요청

웹어플리케이션 서버  3. 처리를 수행

DB            4. 처리를 수행

웹어플리케이션   5. 서버(처리결과 웹서버로 돌려보낸다)

웹서버         6. 응답

웹브라우저

 

Web Server

대표적으로 Apache, WebtoB 등이 있다.

웹 서버는 말 그대로 작성된 html페이지 등을 네트워크망에 종속되지 않고,

웹 서비스를 할 수있도록 어플리케이션이라고 생각하면 간단하다.

 

HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을

전송해주는 서비스 프로그램을 말한다.

 

WEB : 아파치나 IIS와 같은 소프트웨어는 HTML/CGI나 기타 웹 문서들을

  HTTP규약에 따라 웹 클라이언트와 주고 받으며 통신하는 것이 주 역할

WAS : 우선 규모가 크고 엔터프라이즈 환경에 필요한 트랜잭션, 보안, 트래픽관리,

DB커넥션 풀, 사용자 관리 등의 다양하고 강력한 기능을 제공하는 s/w를 의미

 

왜 WEB과 WAS를 나눠서 쓰는가?

: 웹서버에 화면을 동적으로 보여주기 위해 여러가지 로직이 들어가게 되는데,

한서버에 로직이 집중되어 있다보니, 무거워지고 속도 및 보안에 문제가 생긴다.

그래서 화면에 뿌려주는 로직(Presentation Logic)은 웹서버(Servlet Engine)에

실제 돌아가는 로직(Business Logic)은 WAS에서 일을 나눠 역할분담을 시킴.

 

L3

: 3레이어의 프로토콜인 IP 등에서스위칭을 수행하므로 자신에게 온 패킷의

destination 이 외부에 존재하는 IP일 경우 그 패킷을 외부에 연결된 라우터로

보내줄 수 있다. 즉 L3 스위치는 라우터 기능도 갖고 있기 때문에

라우터와의 경계가 모호해진다.

쉽게 말하면 IP를 전달 해주는 역할을 한다.

예를 들어 192.168.X.X를 사용하는 서버가 있을 경우 L3 스위치에서는 해당 서버IP를

찾아주는 역할을 한다.

 

L4

: 4레이어의 프로토콜인 TCP/UDP 등에서 스위칭을 수행하므로 TCP와 UDP 등의

헤더를 보고 그것이 FTP인가 HTTP인가 SMTP인가를 보고 어떤 것을 우선시해서

스위칭 할지 판단할 수 있다. 즉, 로드 밸런시잉 가능해진다는 얘기인데

이는 L3 이하에서는 불가능하다.

 

장점 : 로드밸런싱, Failover 기능

로드밸런싱

: L4장비의 VIP(Virtual IP)를 통하여, 한 서버에 대한 요청을 2개 또는 그 이상의

서버로 분산이 가능하다.

예) 192.168.X.1 에서 서비스를 하고 있는 서버가 있다.

이 때, 192.168.X.1를 VIP로 할당하고, 기존 서버에는 192.168.X.2를 새로운

추가 서버에는 192.168.X.3를 할당한다. 둘 사이에는 동기화가 진행 되어야 한다.

이렇게 되면, 192.168.X.1에 들어오는 기존 요청을 L4 장비가 받게 되며,

L4장비는 Contiguration에 맞춰 기존 서버와 신규 서버에 응답을 분산 시킬 수 있다.

 

Failover 기능

: 로드 밸런싱과는 다른 의미로, 한 대의 서버가 VIP를 통해 서비스를 하다가 예기치 못한 사고

로 인하여 서비스가 주앋ㄴ 되었을 때 자동으로 다른 서버가 같은 역할을 수행한다.

(기존 서버와 동기화가 되어 있어야 함)

예) 앞선 로드밸런싱과 같이 L4 VIP에 192.168.X.1을 할당한다.

그리고 기존 서버 192.168.X.2를 할당하고 VIP로 들어오는 요청을 처리하도록 한다.

그리고 동일한 서버에 192.168.X.3를 할당하면 기존 서버가 다운될 경우 신규서버가

응답을 처리하게 된다.

 

OSI4 계층

: 개방형 시스템 상호연결(Open System Intercon-nection; OSI)

  한글 그대로 상호연결에 있어 개방(열려있다. 표준) 모델을 뜻함.

  - 상호 이질적인 네트워크간의 연결에 어려움이 많은데, 이러한 호환성의 결여를

  막기 위해 ISO(국제 표준화 기구)에서는 OSI 참조모델을 제시함.

  - 실제 인터네세서 사용되는 TCP/IP는 OSI 참조모델을 기반으로 상업적이고

  실무적으로 이용될 수 있도록 단순화된 현실화이 과정에서 채택된 모형

 

 

REPOSITORY

: 정보기술에서 데이터 집합체가 보관되고 조직적인 방식으로 유지되는 대체로

컴퓨터 저장자치 내의 주요 장소. (저장소란 뜻을 가짐)

DAO처럼 하나의 거대한 계층을 이루고 있지 않으며, 도메인 오브젝트의 내부에 위치하여

해당 오브젝트만을 위한 기능을 제공해준다. 겸손한 DAO

 

  도메인 영역과 데이터 인프라스트럭쳐 계층의 분리하여 데이터 계층에 대한 결합도를

  낮추기 위한 방안

  생성된 Aggregate에 대한 영속성 고나리, 조회, 등록, 수정, 삭제시 Aggregate의 일관성 유지

  DB및 데이터 저장소의 데이터를 조회하고 저장하는 경우 Repository를 활용한다.

 

 

DAO

: DAO는 DB에서 값을 꺼내와 도메인 오브젝트로 반환해주거나 적절한 값으로 반환해주는

게층을 일컫는다. Repository는 한 도메인 오브젝트에 대해서 객체의 값을 보증해주기 위해

도메인 내부에서 DB와 소통하는 객체를 일컫는다.

 

 

 

Domain Driver Design(DDD) 도메인 주도 설계

목적 : 소스를 재활용 (세분화)

팀 전체가 함께하는 거대한 작업 (전체 설계도를 그려나가는 작업)

 

 

 

 

Nas(Network Attached Storage) : 쉽게 말하면 LAN으로 연결하는 외장 하드디스크

현대의 클라우드 스토리지와 비슷한 부분이 많음.

구조적으로는 스토리지 서버를 단순화, 소형화한 것.

특징(장점)

  ■ 간편한 데이터 공유

  ■ 저장장치를 가지고 다닐 필요가 없음.

  ■ 다양한 용도

  ■ 보안

특징(단점)

  ■ 네트워크 연결은 필수

  ■ 성능의 한계

  ■ 설정의 복잡함

 

L3DSR(Direct Server Returm)

L7 HealthCheck

MSA(MicoreService Architecture)에서 자주 언급되며 좋은 서비스를 개발하기 위한

기본 요소인 Loose Coupling(느슨한 결합)과 High Cohesion(높은 응집도)륾 만족시키기

위한 필수 개념을 포함하고 있는 도메인 주도 디자인(Domain Drivven Design : DDD)의

개념부터 알아보자.

 

도메인내의 여러 업무 정의나 문제를 어떻게 모델로 잘 표현하고 그것을 바탕으로

구현하기 쉽게 이해할 수 있는 구조로 정의되냐가 DDD의 핵심

 

따라서 아래의 요구서항을 충족시켜야 한다.

■ 모델과 핵심 설계는 상호 영향을 주고 받으며 구체화된다.

■ 모델은 모든 팀 구성원들이 사용하는 언어의 근간을 이룬다.

■ 모델은 불순물을 걸러낸 핵심 지식만을 포함한다.

 

Domain Model Pattern

 

  Entity

    속성이 아닌 식별성을 기준으로 정의되는 도메인 객체

    ex) DB : ERD(Entity - Relationship Model), J2EE - Entity Bean

 

  Value Object

    식별성이 아닌 속성을 이용해 정의되는 불변 객체

    모든 것에 식별성을 부여하고 Entity로 관리한다면 복잡성 증가

    과거 JAVA의 DTO(Data Transfer Object) 패턴의 Value Object과 관계 없음.

    Entity와 Value Object를 구별하는 첫 번째 조건은 식별성

    식별성을 가지면 Entity 그렇지 않으면 Value Object

 

  Service

    Domain Object에서 위치시키기 어려운 operation을 가지는 객체

    여러 Domain Object 다루는 연산 Service의 오퍼레이션은 일반적으로 stateless

    Domain Object에 해당되는 역할을 service operation으로 만드는 경우 도메인 역할을

    침범하여 걍 결합이 일어남

 

  Module

    유사 작업 및 개념을 그룹화하여 복잡도를 감소시키는 기법

    응집도가 높은 모듈은 모듈간의 관계는 약 결합

    JAVA로 구현하는 경우 package로 구성될 수 있다.

 

  Aggregate

    연관된 Entity와 Value Object의 묶음. 일관성과 트랜잭션, 분산의 단위,

    캡슐화를 통한 복잡성 관리

    예를 들어 쇼핑몰 사이트에서 주문 Entity 내에 배송주소 정보를 우편번호,

    주소1, 주소2, 상세주소 이런식으로 각 칼럼으로 정의하는 것이 아니라,

    주소라는 Value Object를 별도로 작성하고 주문 Entity는 주소 Value Object를

    포함하는 방식으로 관계 일관성 및 단순화를 유지한다.

 

  Factory

    복잡한 Entity의 생성 절차에 캡슐화 할 수 있는 개념

    생성하기 복잡한 Aggregate내의 여러 객체를 동시에 생성

    생성시 Aggregate의 일관성 유지

 

UML다이어그램

UML(Unified Modeling Language)

: 소프트웨어의 정적인 구조와 동적인 행위, 그리고 그와 관련된 다양한 고나점을

표현하기 위한 그래픽적인 표기법이다. 인간이 지닌 시각적, 공간적인 해석 능력은

다이어 그램에 녹아있는 다양한 정보를 빠르게, 그리고 효과적으로 이해할 수 있도록

하기 때문에 UML를 적절하게 사용하면 태생적으로 존재할 수 밖에 없는

프로젝트 관련자들 간의 불완전한 커뮤니케이션을 보완할 수 있다.

 

정의 : 프로그램 설계를 표현하기 위해 사용하는, 주로 그림으로 된 표기법을 의미한다.

객체지향 언어와 밀접한 관련이 있기에 객체지향 모델링 언어라고 불린다.

소프트웨어 시스템, 업무, 모델링, 시스템의 산출물을 규정하고 시각화하며,

문서화 하는 언어이다. 프로그램언어는 아니며, 모델링 언어일뿐 방법론은 아니다.

 

왜 사용해야 되는가?

: 소프트웨어 시스템을 구축하기 전에 모델을 설계하는 것은 건물을 지을 때 청사진을 그리는 것과 마찬가지로 필수적인 일이다.

좋은 모델은 아키텍처를 건전하게 하고 프로젝트 팀의 의사소통을 원활하게 하는데 있어서

필수적이다. 한번에 이해하기 힘든 복잡한 시스템이 늘어나면서 시각적 모델링은 필수적이다.

 

 

웹 클라이언트 = 웹 브라우저

어떤 서비스를 요청하는 역할을 수행

"웹 서버에 자료를 요청하기 위해 HTTP를 사용하는 클라이언트 프로그램"

 

서버사이드(Server-Side)

: 웹 서버측에서 하는 작업들

웹브라우저(클라이언트)에서 넘어온 자료를 데이터베이스에서 저장 한다든지,

어떤 수학적인 게산을 하여 결과를 만들어 내는 역할을 수행

예) PHP, ASP, Peri, Python

 

클라이언트 사이드

: 웹 브라우저(클라이언트 사이드)를 사용하면 서버의 작업량을 줄일 수 있다.

서버가 작업해야할 부분중에서 클라이언트가 할 수있는 작업을

스스로 처리하기 때문에 서버의 작업량을 줄여줄 수 있어 효율적이다.

예) 자바스크립트

 

웹 컨테이너(Web Container)

- JSP와 서블릿을 실행시킬 수 있는 소프트웨어를 웹 컨테이너 혹은 서블릿 컨테이너라고 한다.

- 웹 서버에서 JSP를 요청하면 톰캣에서는 JSP파일을 서블릿으로 변환하여 컴파일을 수행하고

 서블릿 수행결과를 웹서버에게 전달하게 된다.

 JSP컨테이너가 탑재 되어있는 WAS는 JSP 페이지를 컴파일 하여 동적인 페이지를 생성한다.

 

 Servlet Conatiner, JSPContainer, EJB Container 등의 종류가 있다.

 

 웹 어플리케이션 서버(Web Application Server/WAS)

 웹 서버 + 웹 컨테이너

 웹 상에서 사용하는 컴포넌트들을 올려놓고 사용하게 되는 서버

 EJB와 같은 빈들이 올라가게 되며, 서버에 따라 웹에 필요한 많은 기능들을 포함하고 있다.

 J2EE스펙을 구현한 서버(JSP/Servlet Container와 EJB Container 로서의 기능)

 웹 서버는 웹 문서를, WAS는 JSP페이지 등을 양분하여 서버 부담을 줄이는 것이 가능하다.

 가장 많이 사용하는 WAs서버 : BEA의 WebLogic, IBM의 WebSphere, T-max의 Jeus, Tomcat, Redhot의 JBOSS

 

Web Hosting

 : 이미 서버가 구축된 외부 컴퓨터에 다수의 이용자가 소량의 저장공간을 나눠

 임대하여 사용하는 것. 저장공간 용량에 제한이 있다.

 

 자바스크립트의 스코프

 자바스크립트에서 스코프(scope)는 코드가 실행되는 컨텍스트(변수영역, 실행영역, 유효범위

 등의 용어로 알려져있기도 하다. 실제로는 스코프라는 용어가 가장 많이 사용됨.)이며,

 전역 스코프, 지역스콮(함수 스코프), eval 스코프로 구분

 

 스코프 체인(Scope Chain)

 함수를 포함한 함수는 서로 연결된 실행 스코프를 만들며 이렇게 연결된 실행 스코프를

 스코프 체인이라 부른다. 그래서 자바스크립트는 변수를 찾을 때 스코프의 계층 구조에

 기반한 검색 체인을 거슬러 올라가며 추적하게 된다.

 

 Mixins(믹스인)

 팀 협력이 좀 더 원활하게 이루어질 수 있도록 도와주는 도구를 제작

 코드 반복을 제거하고 컴포넌트가 필요한 부분에만 집중할 수 있게 도와주는 역할을 함.

 

코딩 컨벤션

  팀프로젝트간의 지켜야하는 템플릿 표준

 

ERP(Enterprise Resource Plannnig)

전사적 자원 관리 /

기업 활동을 위해 쓰여지는 모든 인적 물적자원을 관리하는 통합정보시스템

 

AOAD (Aspect-Oriented Software Development)

소프트웨어 개발 접근법

개별적 기능성 부분을 관리하고 모듈화 할 수 있게 하는 툴의

최근 개발된 카테고리에 의해 지원 됨.

 

TCP란?

인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

일반적으로 TCP와 IP를 함께 사용함.

IP가 데이터의 배달을 처리

TcP는 패킷을 추적 및 관리하게 됨.

TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용

 

특징

 ■ 연결형 서비스로 가상 회선 방식을 제공

 ■ 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking을 통해 해제

 ■ 흐름 제어 및 혼잡 제어

 ■ 높은 신뢰성 보장

 ■ UDP보다 느림

 ■ 전이중(Full-Duplex), 점대점(Point ot Point)방식.

 

 TCP가 가상 회선방식을 제공한다는 것은 발신지와 수신지를 연결하여 패킷을 전송하기 위한

 논리적 경로를 배정한다는 것이다.

 3-way handshaking과정은 목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해서

 세션을 수립하는 과정을 의미한다.TCP가 이러한 특징을 지니는 이유는 이렇다.

 연결형 서비스로 신뢰성을 보장하기 때문이다. 그래서 3-way handshaking의 과정도

 사용하는 것이고, 데이터의흐름제어나 혼잡 제어와 같은 기능도 한다.

 하지만, 이러한 기능 때문에 UDP보다 속도가 느리다.

 이러한 기능은 CPU를 사용하기 때문에 속도에 영향을 준다.

 그렇기에 TCP는 연속성보다 신뢰성 있는 전송이 중요할 때에 사용하는 프로토콜이다.

 

패킷(Packet)이란?

인턴뎃 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서

데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 한다.

 

UDP(user Datagram Protocol)

데이터를 데이터그램 단위로 처리하는 프로토콜

여기서 데이터그램이란 독립적인 관계를 지니는 패킷이라는 뜻으로,

UDP의 동작방식을 설명하자면 다음과 같다. TCP와 달리 UDP는 비연결형 프로토콜이다.

즉 연결을 위해 할당되는 논리적 경로가 업슨ㄴ데 그렇기 때문에 각각읲 ㅐ킷은

다른경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데

이렇게 데이터를 서로 다른 경로로 독립적으로 처리하게 되고,

이러한 프로토콜을 UDP라고 한다.

 

[UDP 특징]

 ■ 비연결형 서비스로 데이터그램 방식을 제공한다.

 ■ 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.

 ■ UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

 ■ 신뢰성이 낮다.

 ■ TCP보다 속도가 빠르다.

 

 TcP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만,

 신뢰성있는 데이터의 전송을 보장하지는 못한다. 그렇기 때문에

 신뢰성보다는 연속성이 중요한 서비스 예를 들면 실시간서비스(Streaming)에 자주 사용된다.

 

LIST