📘웹서비스프로그래밍

웹의 특징

  • 인터넷은 컴퓨터 네트워크 망, 웹은 인터넷 서비스 중 하나를 의미함
  • 인터넷상의 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있게 해주는 정보 검색 시스템
  • HTTP 프로토콜 사용
  • HTML문서를 연결하여 다양한 콘텐츠 제공
  • 많은 사람들이 정보를 쉽게 공유하고 접근할 수 있도록 하는 것을 목적으로 함

웹의 동작 구조

  1. URL입력
  2. DNS서버에서 도메인 이름을 IP주소로 변환하여 제공
  3. IP주소의 서버 80번 포트로 접속 시도(서버는 접속 대기)
  4. 웹 서버는 요청 내용을 분석하여 해동 페이지를 읽음
  5. 웹 서버는 HTML파일 내용을 텍스트로 클라이언트로 전송
  6. 웹 브라우저는 HTML태그를 분석하고 적절히 변환하여 화면 구성

네트워크

사전적 의미 : 전선이나 혈관,통로 등으로 이루어진 망형 조직 가장 많이 쓰이는 의미 : 컴퓨터와 컴퓨터를 연결해주는 망 -IP주소-TCP/IP로 연결된 네트웨크 에서 각각의 컴퓨터를 구분하기 위해 사용하는 주소

프로토콜

네트워크를 구축하기 위한 컴퓨터 간의 연결 규격

OSI 7계층

  • 네트워킹을 위한 물리적 장비에서부터 실제 서비스를 제공하기 위한 애플리케이션에 이르는 단계까지를 계층화 한 모델
  • 계층화를 통해 상위 레벨에서는 하위 레벨에서 구현한 내용을 모르더라도 표준화된 인터페이스를 통해 네트워크 시스템을 개발, 운영 할 수 있음

TCP/IP :

  1. 여러 포로토콜 중 가장 널리 쓰이며 인터넷에서도 사용되고 있는 프로토콜
  2. 컴퓨터 간에 통신할 수 있도록 만든 프로토콜의 종류 중 한가지 3.이 프로토콜에 기반하고 있는 것이 인터넷 4.TCP/IP가 인터넷의 기반 프로토콜로 자리 잡은 이유 : 하드웨어,운영체제,접속 매체와 관계없이 동작할 수 있는 개방형 구조
  3. OSI 7계층을 좀 더 단순화 하여 4계층으로 정의
  4. TCP : 데이터 흐름 관리, 데이터 정확성 확인 등의 역할 수행
  5. IP : 데이터(패킷)을 목적지까지 전송하는 역할 담당
  6. TCP/IP는 개방형 구조로 , 특정 운영체제나 하드웨어에 영향을 받지 않고 근거리와 원거리 모두 데이터를 전송할 수 있음

인터넷

  • 전세계가 하나로 연결된 네트워크를 의미함
  • 즉 인터넷 자체는 네트워크 인프라임

    인터넷 기반 서비스

  • 우리가 알고 있는 웹, 이메일 등은 인터넷 기반의 서비스
  • 웹 이외에 이메일,FTP,Telnet,DNS등이 있지만 일반적으로 사용하는 인터넷 기반 서비스로는 웹이 절대적(이메일은 대부분 웹 기반으로 이용)

포트

  • 네트워크 서비스를 제공하기 위한 일종의 출입문
  • 하나의 컴퓨터에서 여러 개의 네트워크 서비스를 제공하는 경우 이들을 구분하기 위한 목적으로 사용
  • 포트와 프로토콜이 일치하지 않는 경우 정상적인 네트워크 서비스를 이용할 수 없음
  • 포트는 접속 할 수 있게 개방해 놓은 문과 같으므로 보안과 밀접한 관계가 있음

도메인 네임 시스템

  • 컴퓨터의 IP주소는 네트워크에서 컴퓨터를 구분해주는 주민번호 같은 개념
  • 인터넷 주소의 형태 : 호스트(컴퓨터)이름(www)+도메인 이름(hanbit.co.kr)
  • 도메인 이름은 규칙에 따라 붙여지며, 도메인을 관리하는 기관에 일정 비용을 지불하고 구매해야함
  • 도메인 이름을 통한 웹 사이트 접속도 겉으로는 보이지 않지만 내부적으로 도메인 이름을 IP주소로 변환하는 서비스 이용

클라이언트-서버 구조

  • 웹 서비스 제공을 위해서는 서버 컴퓨터와 서버에서 동작하는 프로그램이 필요함
  • 클라이언트 : 웹 서비스를 이용하는 사용자(웹 브라우저:클라이언트 프로그램)
  • 서버 : 웹 서비스를 제공하기 위한 서비스 공급자
  • 프론트엔드 : 클라이언트 중심의 프로그래밍(HTML.CSS,JS)영역
  • 백엔드 : 서버를 구성하며 서비스를 제공하기 위한 서버 쪽 프로그래밍(웹 서버 소프트웨어, 웹 프레임 워크,데이터베이스)영역

HTML

  • 웹 문서의 구조를 정의하고 콘텐츠를 표현하는 기본 마크업 언어
  • 웹을 통해 콘텐츠를 제공하려면 HTML을 사용해야 함
  • HTML은 태그라고 하는 간단한 표기법으로 표현하고자 하는 정보에 의미 부여

CSS

  • HTML문서에 레이아웃과 디자인을 포함한 시각적 요소 정의
  • HTML은 콘텐츠의 내용과 구조(레이아웃)을 정의하고 CSS에서 콘텐츠의 위치,정렬,글자크기,여백,배경 색상 등을 정의
  • 디자인을 적용할 HTML요소를 셀렉터(Selector)로 지정하고 원하는 디자인 속성을 부여하는 형식 사용

자바 스크립트

  • HTML문서에서 동적으로 변하는 콘텐츠를 표현하기 위해 이벤트 처리를 하거나 서버와 연결하여 데이터를 가지고 오는 등의 역할을 하는 프로그램 언어
  • HTML문서에서 이벤트를 서버 연결없이 동적으로 처리할 수 있는 기술

## 백엔드 중심 개발

  • 전통적인 웹 개발 모델이며, 서버에서 모든 것을 담당하는 방식
  • 특히 자바 서블릿/jsp는 가장 인기 있는 백엔드 개발 기술임
    1. 클라이언트 요청은 URL형태로 수행
    2. 서블릿과 자바 또는 Node.js 등을 통해 데이터베이스와 연동
    3. JSP에서 HTML과 데이터를 조합하여 페이지 구성
    4. 클라이언트에 HTML형태의 응답 전달 ## 백엔드 중심 개발의 장점
  • 서비스 연동에 필요한 다양한 서버 환경에 대응할 수 있음
  • 검색 엔진 최적화에 유리함
  • 기술이 안정적이고 검증됨
  • 기존에 개발된 시스템이 많고 레거시 시스템은 오랫동안 유지됨 ## 백엔드 중심 개발의 단점
  • 모바일 네트워크의 속도가 느리며 이용에 많은 비용을 지불해야함
  • 서버에 화면 갱신을 요청할 경우 모든 데이터가 다시 전송되어야하므로 모바일 환경에는 부적합
  • REST API와 클라우드 인프라가 보편화되면서 기존의 대규모로 서버를 구축하는 모놀리식 아키텍처 방식보다는 소규모 서버를 연동하는 MSA방식 확산 ## 프론트엔드 중심 개발
  • 클라이언트에서 HTML을 가지고 있거나 서버에서 HTML만 받아오고 서버로부터 화면 구성에 필요한 데이터만 자바스크립트로 받아와 데이터와 화면을 조합해 보여줌
  • 이러한 방식을 CSR(Client Side Rendering)이라고도 함
    1. 클라이언트 요청은 URL형태로 수행
    2. 자바 서블릿, JAX-RS,Node,js등을 통해 데이터베이스와 연동
    3. 클라이언트에 JSON형태의 응답 전달
    4. 클라이언트는 전달받은 JSON데이터를 화면(HTML)과 조합(렌더링) ## 프론트엔드 중심 개발의 장점
  • 필요한 부분의 데이터만 갱신이 가능하기 때문에 서버로부터 매번 갱신된 전체 화면을 받아올 필요가 없음
  • 실시간 데이터 갱신이 자유로움
  • SPA,PWA등의 구현에 적용 가능
  • React.js,Vue.js등 다양한 라이브러리/프레임워크를 사용할수 있음 ## 프론트엔드 중심 개발의 단점
  • 프론트엔드 중심의 개발이라 하더라도 데이터 제공을 위한 서버는 필요
  • 데이터 제공 서버는 주로 Rest API로 개발되기 때ㅔ문에 백엔드 작업은 당연히 존재
  • 프론트 엔드 중심 개발을 하더라도 콘텐츠가 검색 엔진에 노출될 수 있도록 검색 엔진 최적화를 위해 SSR을 접목하기도함

새로운 웹 개발 트렌드

  1. 자바 언어의 대안 등장 (코틀린)
  2. 백엔드 개발 및 운영 환경의 변화
  3. 프론트엔드 중심 개발로의 이동
  4. 스프링 프레임 워크
  5. 전반적인 웹 프로그래밍 개발의 큰 그림을 이해하면서 jsp에 대한 최소한의 이해를 겸비하는것이 필요 #자바 웹 개발 환경

서블릿 컨테이너

  • 웹 어플리케이션을 구동하는 서버
  • 서버 컴퓨터가 WAS로 동작하려면 서블릿 컨테이너 필요
  • 실제 서비스 시스템을 구축할 때는 정적 콘텐츠 서비스를 위한 웹 서버와 WAS를 병행해 운영하며 설정을 통해 상호 연동되는 구조

배포 프로세스

-배치라고도 하며, 개발된 결과물을 실제 사용자에게 전달하는 작업

데브옵스

  • 개발과 운영의 합성어
  • 규모가 큰 소프트웨어의 신속한 개발과 지속적 유지보수,배포등의 운영을 병행하기 위한 노력
  • 빈번한 서비스 배포, 웹 기반의 서비스 형태가 필수요소로 자리잡음
  • 이러한 새로운 전략을 위해 개발 팀과 운영팀이 병홥되어 개발,테스트,배포,운영에 이르는 애플리케이션 생명주기 개발

    데브옵스 장점

  • 빠른속도 (계획부터 배포까지 작업 속도를 빠르고 효율적으로 제공,시장 변화에 빠르게 대처하고 비즈니스 성과 창출 가능)
  • 빠른 배포 (새로운 기능의 릴리즈와 오류 수정 속도가 빨라져 고객의 요구에 빠르게 대응)
  • 안정성(지속적 통합, 지속적 전달,모니터링,로깅을 통해 안정적인 서비스 품질 제공)
  • 확장 가능성( 복잡하거나 변화하는 시스템을 효율적으로 관리)
  • 협업 강화(개발 팀과 운영 팀의 긴밀한 협력, 책음 공유->비효율을 줄이고 시간 절약)

    데브옵스 구성요소

  • SCM(소스코드 버전 관리 ,깃)
  • CI(빌드와 테스트의 통합)
  • CD(지속적인 배포, 원하는 시점에 바로 배포가 가능한 설정 필요)
  • CM(서비스 설정의 통합 관리,운영서버OS,라이브러리 버전,컴파일 등 포함)

태그:

카테고리:

업데이트: