반응형

1번째 포스팅 참고 ☞ 신입 개발자 기술면접 준비하기 (1) - Java

 

API(Application Programming Interface) 란?

응용프로그램에서 사용할수 있도록 운영체제나 프로그래밍언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

  • API : 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로 애플리케이션 프로그래밍 인터페이스를 나타낸다.
  • 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것

 

API의 장점

  • API를 사용하면 구현 방식을 알지 못해도 제품 또는 서비스가 서로 커뮤니케이션할 수 있으며 애플리케이션 개발을 간소화하여 시간과 비용을 절약할 수 있습니다.
  • 새로운 툴과 제품을 설계하거나 기존 툴과 제품을 관리하는 경우 API는 유연성을 제공하고 설계, 관리, 사용 방법을 간소화하며 혁신의 기회를 제공합니다.
  • API는 리소스에 대한 액세스 권한을 제공하고 보안과 제어를 유지할 수 있게 해주며 액세스 권한을 어떻게, 누구에게 제공할지 여부만 결정하면 됨

 

REST란?

  • REST는 Representational State Transfer 의 약자로서 웹의 장점을 최대한 활용할 수 있는 아키텍처
  • 최근의 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다.
  • REST 아키텍처는 Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

 

RESTful 이란?

  • RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.

 

Http 응답상태코드

  • 성공(Success)
    • 200 상태코드 : 정상적으로 수행
    • 201 상태코드 : 자원(Resource) 생성 요청. 성공적으로 수행됨
  • 클라이언트 에러(Client Error)
    • 400 상태코드 : 클라이언트 요청이 부적절할 경우 응답 코드
    • 401 상태코드 : 클라이언트가 권한이 없는 자원을 요청하였을 때 응답 코드
    • 403 상태코드 : 보호되는 자원을 요청하였을 때 응답 코드
    • 405 상태코드 : 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 때 응답 코드
  • 기타
    • 301 상태코드 : 클라이언트가 요청한 리소스에 대한 URI가 변경되었을 때 응답코드
    • 500 상태코드 : 서버에 뭔가 문제가 있을 때 사용하는 응답 코드
  • 500 : 서버쪽 오류로 인한 상태코드

 

MVC(Model - View - Controller) 패턴이란?

  • 애플리케이션을 세가지의 역할로 구분한 개발 방법론
  • 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
  1. 사용자가 웹 사이트에 접속한다. (User)
  2. Controller는 사용자가 요청한 웹 페이지를 서비스하기 위해서 모델을 호출한다.
  3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
  4. Controller는 Model이 리턴한 결과를 View에 반영한다.
  5. 데이터가 반영된 View는 사용자에게 보여진다.

 

MVC Model-1

  • JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리하는 구조이다.
  • JSP 페이지 안에서 모든 정보를 표현(View)하고 저장(Model)하고 처리(Control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어진다.
  • 정의 : 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조
  • 장점 : 단순한 페이지 작성으로 쉽게 구현이 가능하다. 중소형 프로젝트에 적합
  • 단점 : 웹 어플리케이션이 복잡해지면 유지보수 문제가 발생된다.

MVC Model-2

  • MVC1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 됨
  • 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 JSP 페이지로 포워딩
  • 정의 : 클라이언트의 요청처리와 응답처리, 비지니스 로직 처리하는 부분을 모듈화시킨 구조
  • 장점 : 처리작업의 분리로 인해 유지보수와 확장이 용이하다.
  • 단점 : 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.

 

Spring MVC 프레임워크

  • 스프링이 제공하는 트랜젝션 처리, DI, AOP를 손쉽게 사용
  • 스트럿츠2와 같은 프레임워크와 연동이 쉬움
반응형

Spring MVC 주요 구성요소 및 처리 흐름

  • 다른 mvc 프레임워크와 마찬가지로 컨트롤러를 사용하여 요청을 처리
  • 스프링에서는 DispatcherServlet이 MVC에서의 컨트롤러(Controlle)부분을 처리

DispatcherServlet의 역할

  • 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성

HandlerMapping의 역할

  • 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정

Controller의 역할

  • 클라이언트의 요청을 처리한 뒤 결과를 DispatcherServlet에게 리턴

ModelAndView의 역할

  • 컨트롤러가 처리한 결과 정보를 뷰 선택에 필요한 정보를 담음

ViewResolver의 역할

  • 컨트롤러의 처리 결과를 생성할 뷰를 결정

View의 역할

  • 컨트롤러의 처리 결과 화면을 생성, JSP 또는 Velocity 템플릿 파일 등을 뷰로 사용

 

Spring MVC 개발

  • 클라이언트에 요청을 받을 DispatcherServlet을 web.xml 파일에 설정
  • 클라이언트의 요청을 처리할 컨트롤러 작성
  • ViewResolver 설정(컨트롤러가 전달한 값을 이용해서 응답 화면을 생성할 뷰를 결정)
  • JSP나 Velocity 등을 이용하여 뷰영역의 코드를 작성

 

RIA(Rich Internet Application)

  • 일반 데스크톱 애플리케이션과 같이 풍부한 유저 인터페이스를 제공하고, 다이나믹하며 모든 처리 과정을 새로고침 없이 할 수 있도록 지원해주는 웹 애플리케이션

 

AJAX(Asynchronous JavaScript and XML) 특징

  • 플러그인을 사용하지 않고 브라우저만으로 이용 가능
  • 페이지 이동없이 어떤 문서를 요청하고 응답된 결과를 가져다가 동적 처리 할 수 있도록 하는 JavaScript 라이브러리
  • 웹 서버에서 수신한 HTML 및 XML 데이터를 처리하는 데는 DOM을 사용

장점

  • 접근이 용이하며, 페이지 이동없이 고속으로 화면전환 가능
  • 비동기 통신 가능
  • 수신 데이터량을 축소할수 있으며, 웹 클라이언트에게 처리를 위임 가능
  • 화려한 유저 인터페이스 제공 등
  • 다양한 오픈 소스 프레임워크(Prototype, Dojo, jQuery, Google Web Toolkit 등) 제공

단점

  • 브라우저 호환성에 자유롭지 못하다
  • JavaScript는 유지보수 및 디버깅이 어렵다
  • Ajax가 포함된 HTML 문서를 제공한 웹 서버가 아닌 다른 웹 서버로 요청을 보낼 수 없고, 클라이언트 PC의 파일에 접근할 수 없다.

 

Ajax 기반 기술들

  • XMLHttpRequest : 웹 브라우저와 웹 서버간 비동기 통신을 위한 JavaScript 객체
  • DOM(Document Object Model) : 마크업 문서의 특정 노드를 객체 단위로 조작할 수 있는 일관된 방법 제공
  • JSON(JavaScript Object Notation) : 구조화된 텍스트 데이터의 교환을 위한 자바스크립트 표현식
  • XSL : XML 문서를 XML 또는 HTML 문서로 변환하기 위한 언어

 

XML(Extensible Markup Language)

  • HTML은 고정된 태그 집합이고, 디스플레이 기능에 치중ㅎ 다양한 비즈니스 데이터 표현 불가능하여 한계가 있음
  • 인터넷 환경에서 구조화된 문서를 전송 가능하도록 설계된 표준 마크업 언어
  • SGML의 서브셋 형태로 SGML과 HTML의 장점을 수용하여 만들어진 언어

XML 장점

  • 호환성
  • 독립성
  • 확장성
  • 다양한 포맷으로 변경 가능
  • 검색 능력의 향상

 

DOM

  • 파서가 문서 전체 또는 일부를 읽어서 메모리에 객체의 트리를 구성해서 xml 어플리케이션에 제공
  • SAX에 비해 읽기 성능은 낮지만 Random Access 및 쓰기 기능이 제공됨
  • 표준 인터페이스를 구현한 객체 기반 접근
반응형

+ Recent posts