서버리스 프론트

  1. 웹서버

사진

웹 서버란 클라이언트가 웹 브라우저에서 어떠한 페이지를 요청하면 웹 서버에서 그 요청을 받아 (정적 콘텐츠)* 제공해주는 서버

→ 대표적으로 웹 서버라고 하면 Apache 생각하면 된다.

But 웹 서버가 정적인 콘텐츠 제공할까?

→ 그렇지 않다, 웹 서버가 동적 콘텐츠를 요청 받으면 (WAS)* 에게 해당 요청을 넘겨주고.WAS에서 처리한 결과를 클라이언트에게 전달해주는 역할도 한다.

사진

그림과 같이 정적인 페이지를 처리할 때 Static, GET,read,STATUS,file contents 이용하여 데이터 처리

동적인 페이지의 경우 Dynamic, STATUS, Servelt 통해서 response 전달한다.

  1. tatic Pages
    • Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다.
    • 항상 동일한 페이지를 반환한다.
    • Ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들
  2. Dynamic Pages
    • 인자의 내용에 맞게 동적인 contents를 반환한다.
    • 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 * Servlet: WAS 위에서 돌아가는 Java Program
    • 개발자는 Servlet에 doGet()을 구현한다.

  • WAS?

    → 웹 서버와 (웹 컨테이너)* 가 합쳐진 형태로, 웹 서버 단독으로 처리할 수 없는 데이터베이스의 조회나 다양한 logic 처리가 필요한 동적 콘텐츠를 제공

    → 대표적인 WAS는 Tomcat

  • 정적 콘텐츠?

    → 단순 HTML 문서, CSS, JS, 이미지, 파일 등 즉시 응답 가능한 콘텐츠를 의미함

  • 웹 컨테이너?

    → 웹 서버가 보낸 JSP, PHP등의 파일을 수행한 결과를 다시 웹 서버로 보내주는 역할


  1. HTTPS

    1. 사전적 의미:

    HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다

    1. 사용하는 이유:

      HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 (공개키)* 암호화를 지원한다.

사진


  • 공개키?

    → 모두에게 공개가 가능한 키를 의미한다.

    → 공개키 암호화: 공개키로 암호화를 하면 오로지 개인키로만 복호화 할 수 있다.

    (개인키는 나만 가지고 있으므로, 나만 볼 수 있다)

  • 개인키?

    → 나만 가지고 알고 있어야 하는 키를 의미한다.

    → 개인키 암호화: 개인키로 암호화하면 오로지 공개키로만 복호화 할 수 잇다.

    → 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장 할 수 있다.


  1. Nameserve

    1.사전적 의미:

    디렉터리 서비스 프로토콜을 실행하는 프로그램이나 서버를 통칭한다. 일반적으로, 인터넷에서 도메인 이름 서비스를 제공하는 서버를 말한다.

    → 특정 사이트에 접속하기 위해서는 특정 사이트의 “주소”를 이용하여 “방문”이 가능한데

    특정 사이트의 주소인 IP는 외우기 복잡하기도 하고 순서, 규칙이 없어 번거롭다

    이를 편하게 하기 위해 URL이라는 주소를 사용하는데, 이 주소를 사용하기 위해 URL주소를 IP 주소로 변환하는 과정이 필요한데, 이 과정을 네임서버가 당담한다.

사진

  1. 사용하는 이유:

    앞서 설명하듯, 번거로운 IP주소들을 직관적으로 URL으로 사용하기 위해 변환하는 과정이 필요한데 각자의 IP 즉 집에는 고유한 ip라는 주소가 존재하는데 이 주소를 도로명 주소로 표현하듯 URL 으로 DNS로 변경해주는 과정이 필요하기 때문에 사용한다.

    신기하게도 네트워크에 미치는 영향은 적다.


  1. Cloud front

    → 흔히 CDN이라고 표현한다.

    1. 사전적 의미:

      CloudFront는 AWS에서 제공하는 CDN 서비스 입니다. 캐싱을 통해 사용자에게 좀 더 빠른 전송 속도를 제공함을 목적으로 합니다.

    2. 사용하는 이유:

      전 세계 이곳 저곳에 Edge Server(Location)을 두고 Client와 가장 가까운 Edge를 찾아 Latency를 최소화 시켜 빠른 데이터를 제공하기 떄문에 사용한다.

      사진

    CDN을 구성하는 요소들

    • Origin Server :

    원본 데이터를 가지고 있는 서버입니다. 보통 AWS에서의 Origin Server는 S3, Ec2 instance입니다.

    • Edge Server = Edge Location :

    AWS에서 실질적으로 제공하는 전 세계에 퍼져있는 서버입니다. Edge Server에는 요청받은 데이터에 대해서 같은 요청에 대해서 빠르게 응답해주기 위해 Cache 기능을 제공합니다.

    데이터 전송이 발생하는 과정

    1. 클라이언트로부터 Edge Server로의 요청이 발생한다.
    2. Edge Server는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인한다.
    3. 사용자의 근거리에 위치한 Edge Server중 캐싱 데이터가 존재한다면 사용자의 요청에 맞는 데이터에 응답한다

    → 만약 없다면 Origin Server로 요청이 포워딩된다.

    1. 요청받은 데이터에 대해 Origin Sever 에서 획득한 후 Edge server에 캐싱 데이터를 생성하고, 클라이언트로 응답이 발생한다.

    스프링 정리하기

”@” java에서 제공하고 프레임 워크에서 사용하는 “@”

프레임워크의 레이어

  1. Controller
    • 클라이언트의 요청을 받고
    • 요청을 Service로 전달
    • 클라이언트에게 Service로 부터 처리되어 나온 데이터를 클라이언트에게 Response
  2. Service
    • 비지니스 로직을 처리하고
    • DB정보가 필요한 경우는 Repositot에게 전달
  3. Repository
    • DB를 관리(연결, 해제,자원 관리)
  4. Dto / Dao
    • DAO(Data Access Object)
      • 실제로 DB에 접근하는 객체이다.
      • Persistence Layer(DB에 data를 CRUD하는 계층)이다.
      • Service와 DB를 연결하는 고리의 역할을 한다.
      • SQL를 사용(개발자가 직접 코딩)하여 DB에 접근한 후 적절한 CRUD API를 제공한다. JPA 대부분의 기본적인 CRUD method를 제공하고 있다.

          public interface QuestionRepository extends CrudRepository<Question, Long> {
          }
          이렇게 접근한다.
        
        
    • DTO(Data Transfer Object)
      • 계층 간 데이터를 교환하기 위한 객체(Java Beans)*이다
      • DB에서 데이터를 얻어 Service나 Controller 등으로부터 사용하는 객체를 말한다.
      • DB의 데이터가 Presentation Logi Tier 로 넘어오게 될 때는 DTO의 모습으로 바껴서 오고간다.
      • 로직을 갖고 있지 않은 순수한 데이터 객체이며, Getter/Setter 메서드만을 갖는다.
      • 하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 떄문에 DTO클래스에는 setter가 없다.(But, 생성자에서 값을 할당한다.)
    • VO(Value Object)
      • VO는 DTO와 동일한 개념이지만 read only 속성을 갖는다.
      • VO는 특정한 비지니스 값을 담는 객체이지만 DTO는 Layer간의 통신용도로 오고가는 객체를 말한다.

    사진


java Beans :

  • JavaBeans란 자바로 작성된 소프트웨어 컴포넌트를 지칭
  • 자바 관련 소프트웨어 개발에 있어 재사용이 가능한 표준 컴포넌트 모델

스프링?

→ 아무런 세팅이 존재하지 않은 상태의 프레임워크

스프링부트?

→ 세팅이 다 되어 있는 이미 boot되어 있는 스프링으로 제작된 프레임워크

boot가 아닌 spring을 한다면 tomcat을 기용해야 파일을 돌린다

WAS가 필요한 존재