CS / / 2023. 7. 6. 10:52

직무 관련 용어 정리

회사에서 간단한 직무 관련 용어를 숙지하고

그 부분에 대해 간단하게 정리하려고 합니다.

 

API(Application Programming Interface)

  • 사용자가 프로그래밍에서 프로그램을 작성하기 위한 프로토콜 등을 정의해 도움을 주는 시스템

 

C/S(Client/Server)

  • 클라이언트&서버를 줄여서 나타낸 말
  • 클라이언트는 UI를 담당하고 서버는 데이터 처리를 담당
  • 구조가 간단하여 속도가 빠름
  • 확장성이 떨어지며 배포하기 어려움
  • 특정 하드웨어 및 OS에 종속적

 

WEB

  • 현재의 모델 형태로 CS 환경에서 배포가 어려운 점을 보완한 모델
  • 브라우저만 있으면 어디서든 쉽게 접근 가능
  • 복잡한 프로그램일 경우 CS보다 더 복잡해짐
  • 성능이 떨어지고 속도가 느림
  • 많은 기술들이 접목되어 있어 관리하기 어려움

 

2-tier

  • ODBC, JDBC와 같은 API를 사용해 클아이언트가 DB 서버와 직접적으로 통신하는 구조
  • 하나의 DB 서버와 다수의 클라이언트로 구성될 수 있음
  • 사용자가 클라이언트를 통해 서버에 서비스를 요청하면 서버는 클라이언트에게 서비스를 제공

 

3-tier

  • 2-tier 아키텍처의 확장으로 대형 웹 애플리케이션의 경우에 사용
  • presentation layer(브라우저), application layer(서버), database로 나뉘어 작업을 수행
  • 사용자와 DB 사이에 서버가 추가되어 클라이언트는 DB와 더 이상 직접적으로 통신할 수 없음
  • 서버는 클라이언트에 요청을 받아 DBMS에 전달하고 다시 클라이언트에게 응답을 반환

 

Web Server

  • S/W와 H/W로 구분
  • H/W : Web Server가 설치되어 있는 컴퓨터
  • S/W : 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 프로그램
  • 예시 : Apache Server, Nginx, IIS(Windows 전용 Web Server) 등
  • 아래 두 가지 중 적절하게 선택하여 수행
    1. 정적인 컨텐츠를 제공, WAS를 거치지 않고 바로 자원을 제공
    2. 동적인 컨텐츠 제공을 위한 요청 전달(WAS 안에서)/클라이언트(웹 브라우저)의 요청을 WAS에 보내고 그 결과를 클라이언트(웹 브라우저)에 전달
  • 정적 컨텐츠만 Web Server에서 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있음

 

WAS(Web Application Server)

필요한 이유 : 웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재한다 그에 따라 적절한 동적 컨텐츠를 만들어서 제공해야 하는데 Web Server만 이용한다면 원하는 요청에 대한 결과 값을 모두 미리 만들어 놓고 서비스를 해야 하기에 불가능하지만 WAS를 사용하면 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 그때마다 결과를 만들어서 제공 가능
  • DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
  • HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어
  • 웹 컨테이너나 서블릿 컨테이너라고 불림(컨테이너 : JSP, Servlet을 실행시킬 수 있는 S/W)
  • JSP, Servlet 구동 환경을 제공
  • WAS = Web Server + Web Container
  • Web Server 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시(주로 DB Server)
  • WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 차이 없음
  • 프로그램 실행 환경과 DB 접속 기능 제공
  • 여러 개의 트랜잭션 관리 기능
  • 업무를 처리하는 비즈니스 로직 수행
  • 예시 : Tomcat, JBoss, Jeus, Web Sphere 등

 

DBMS(Database Management System)

  • 다수의 사용자들이 DB 내의 데이터를 접근할 수 있도록 해주는 S/W
  • 보통 Server 형태로 서비스 제공
  • 예시 : MySQL, MariaDB, Oracle, PostgreSQL 등

 

미들웨어(MiddleWare)

필요한 이유 : DBMS Server에 Client가 직접 접속하게 되면 로직이 많아지고 크기가 커지고 변경될 때마다 매번 배포가 되어야 하고, 또한 로직이 포함되어 있는 상태로 배포가 되기 떄문에 보안에 취약해짐으로 이를 해결하기 위해
  • 비즈니스 로직을 Client와 DBMS 사이의 MiddleWare Server에서 동작
  • Client는 입력과 출력만 담당하게 됨

 

Java

  • 완벽한 객체 지향 언어
    • 상속(extend)
    • 캡슐화(getter, setter)
    • 다형성(오버로딩, 오버라이딩)
    • 추상화(implement interface)
  • 플랫폼에 독립적인 프로그램 작성 가능
  • 가비지 콜렉터 구조가 구비되어 있어 메모리 누수 문제 해결
  • 멀티 쓰레드 프로그래밍 가능
  • 동적 로딩 지원

 

Servlet

  • 웹 기반의 요청에 대한 동적인 처리가 가능한 Server Side에서 돌아가는 Java Program
  • Java 코드 안에 HTML 코드(하나의 클래스)
  • 웹 개발을 위해 만든 표준

 

JSP(Java Server Page)

  • Java 언어를 기반으로 하는 Server Side 스크립트 언어
  • HTML 코드 안에 Java 코드
  • Servlet을 보완하고 기술을 확장한 스크립트 방식 표준

 

IIS(Internet Information Services)

  • 마이크로소프트 윈도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임
  • 마이크로소프트 사의 윈도우 시스템에서 사용하는 웹 서버 프로그램
  • OS 이용자 대부분이 윈도우를 사용해 쉽게 설치 가능하고 작업이 용이함
  • 대신 운영체제 사용이 윈도우만 가능하며 다른 OS를 사용하게 되면 사용 불가

 

JNDI(Java Naming and Directory Interface)

  • 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API
  • 자바 애플리케이션을 외부 디렉터리 서비스에 연결
  • 자바 애플릿 호스팅 웹 컨테이너가 제공하는 구성 정보를 참고

 

WebSocket

과거의 형태(polling)
웹 소켓 이전 통신 방식(polling) : 일정한 주기로 서버에 요청을 보내는 방법(setTimeout, setInterval)
불필요한 Request와 Connection을 생성하여 서버에 부담을 줌
요청 주기가 짧을수록 부하가 커짐
HTTP 통신을 하기 때문에 Request, Response 헤더가 불필요하게 큼
응답을 실시간으로 받지 않아도 되는 경우에는 사용 가능
  • 서버와 클라이언트 간의 메시지 교환을 위한 통신 규약(프로토콜)
  • 양방향 통신(Full-Duplex) : 데이터 송수신을 동시에 처리할 수 있는 방법
  • 통상적인 HTTP 통신은 client가 요청을 보내는 경우에만 Server가 응답을 하는 단방향 통신이지만, 웹 소켓은 양방향 통신이 가능
  • 실시간 네트워킹(Real Time Networking) : 웹 환경에서 연속된 데이터를 빠르게 노출하는 것
  • HandShake 형태로 통신을 함

 

ActiveX

필요한 이유 : 웹브라우저와 HTML 문서 자체만으론 동영상, 음악 감상, 은행 업무 등의 기능을 원할하게 이용할 수 없기에 웹 브라우저에 연동되는 특정 프로그램을 사용자의 PC에 추가로 설치해 웹 브라우저의 기능을 확장 
  • 마이크로소프트의 인터넷 익스플로러용 플러그인
  • 여러 가지 ActiveX를 설치함으로써 웹 브라우저 및 웹 사이트의 기능을 거의 제한 없이 확장 가능
  • 하지만 익스플로러에서만 사용 가능하고 윈도 기반이 아닌 PC, 스마트폰 같은 기기에서 사용 불가
  • 사용자 PC에 직접 설치되는 특징을 악용해 보안성까지 좋지 않음

 

HTML5

  • 기존의 웹 문서에서는 HTML만으로 웹 서비스를 구성하는 것이 불가능
  • HTML5로 넘어 오면서 클라이언트와 서버와 통신이 가능하며 이에 대한 부가 기능을 제공
  • ActiveX를 사용하지 않아도 웹 서비스를 제공할 수 있을 정도의 기능이 추가됨
  • CSS3, 자바 스크립트 API를 통한 기능의 확장과 결합으로 외부 기술에 의존했던 것을 걷어냄

 

참고 자료는 아래의 링크들을 참고하였고 그 내용을 토대로 정리했습니다.

  1. https://skyblue606.tistory.com/30
  2. https://romcanrom.tistory.com/75
  3. https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
  4. https://www.devkuma.com/docs/java/intro-basic/
  5. https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html
  6. https://doozi0316.tistory.com/entry/WebSocket이란-개념과-동작-과정-socketio-Polling-Streaming
  7. https://blog.naver.com/comgghh/140176061963
  8. https://webclub.tistory.com/491
  9. https://abapta0903.tistory.com/129

 

용어를 정리하면서 과거부터 현재까지 통신 형태가 어떻게 바뀌었는 지와

현재 사용하고 있는 부분을 장점이라고 생각하지 않았지만 과거에 이러한 부분이 있었다는 것을

통해 많이 좋아지고 편해졌다는 것과 클라이언트와 서버 그리고 데이터의 유동 관계에 대해

앎으로써 네트워크 쪽에 거리감이 있었지만 조금 더 가까워진 느낌이 들게 되었습니다.

 

 

 

 

'CS' 카테고리의 다른 글

서버 관련 용어 정리  (0) 2023.07.21
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유