web의 특징,데브옵스
📘웹서비스프로그래밍
웹의 특징
- 인터넷은 컴퓨터 네트워크 망, 웹은 인터넷 서비스 중 하나를 의미함
- 인터넷상의 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있게 해주는 정보 검색 시스템
- HTTP 프로토콜 사용
- HTML문서를 연결하여 다양한 콘텐츠 제공
- 많은 사람들이 정보를 쉽게 공유하고 접근할 수 있도록 하는 것을 목적으로 함
웹의 동작 구조
- URL입력
- DNS서버에서 도메인 이름을 IP주소로 변환하여 제공
- IP주소의 서버 80번 포트로 접속 시도(서버는 접속 대기)
- 웹 서버는 요청 내용을 분석하여 해동 페이지를 읽음
- 웹 서버는 HTML파일 내용을 텍스트로 클라이언트로 전송
- 웹 브라우저는 HTML태그를 분석하고 적절히 변환하여 화면 구성
네트워크
사전적 의미 : 전선이나 혈관,통로 등으로 이루어진 망형 조직 가장 많이 쓰이는 의미 : 컴퓨터와 컴퓨터를 연결해주는 망 -IP주소-TCP/IP로 연결된 네트웨크 에서 각각의 컴퓨터를 구분하기 위해 사용하는 주소
프로토콜
네트워크를 구축하기 위한 컴퓨터 간의 연결 규격
OSI 7계층
- 네트워킹을 위한 물리적 장비에서부터 실제 서비스를 제공하기 위한 애플리케이션에 이르는 단계까지를 계층화 한 모델
- 계층화를 통해 상위 레벨에서는 하위 레벨에서 구현한 내용을 모르더라도 표준화된 인터페이스를 통해 네트워크 시스템을 개발, 운영 할 수 있음
TCP/IP :
- 여러 포로토콜 중 가장 널리 쓰이며 인터넷에서도 사용되고 있는 프로토콜
- 컴퓨터 간에 통신할 수 있도록 만든 프로토콜의 종류 중 한가지 3.이 프로토콜에 기반하고 있는 것이 인터넷 4.TCP/IP가 인터넷의 기반 프로토콜로 자리 잡은 이유 : 하드웨어,운영체제,접속 매체와 관계없이 동작할 수 있는 개방형 구조
- OSI 7계층을 좀 더 단순화 하여 4계층으로 정의
- TCP : 데이터 흐름 관리, 데이터 정확성 확인 등의 역할 수행
- IP : 데이터(패킷)을 목적지까지 전송하는 역할 담당
- 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는 가장 인기 있는 백엔드 개발 기술임
- 클라이언트 요청은 URL형태로 수행
- 서블릿과 자바 또는 Node.js 등을 통해 데이터베이스와 연동
- JSP에서 HTML과 데이터를 조합하여 페이지 구성
- 클라이언트에 HTML형태의 응답 전달 ## 백엔드 중심 개발의 장점
- 서비스 연동에 필요한 다양한 서버 환경에 대응할 수 있음
- 검색 엔진 최적화에 유리함
- 기술이 안정적이고 검증됨
- 기존에 개발된 시스템이 많고 레거시 시스템은 오랫동안 유지됨 ## 백엔드 중심 개발의 단점
- 모바일 네트워크의 속도가 느리며 이용에 많은 비용을 지불해야함
- 서버에 화면 갱신을 요청할 경우 모든 데이터가 다시 전송되어야하므로 모바일 환경에는 부적합
- REST API와 클라우드 인프라가 보편화되면서 기존의 대규모로 서버를 구축하는 모놀리식 아키텍처 방식보다는 소규모 서버를 연동하는 MSA방식 확산 ## 프론트엔드 중심 개발
- 클라이언트에서 HTML을 가지고 있거나 서버에서 HTML만 받아오고 서버로부터 화면 구성에 필요한 데이터만 자바스크립트로 받아와 데이터와 화면을 조합해 보여줌
- 이러한 방식을 CSR(Client Side Rendering)이라고도 함
- 클라이언트 요청은 URL형태로 수행
- 자바 서블릿, JAX-RS,Node,js등을 통해 데이터베이스와 연동
- 클라이언트에 JSON형태의 응답 전달
- 클라이언트는 전달받은 JSON데이터를 화면(HTML)과 조합(렌더링) ## 프론트엔드 중심 개발의 장점
- 필요한 부분의 데이터만 갱신이 가능하기 때문에 서버로부터 매번 갱신된 전체 화면을 받아올 필요가 없음
- 실시간 데이터 갱신이 자유로움
- SPA,PWA등의 구현에 적용 가능
- React.js,Vue.js등 다양한 라이브러리/프레임워크를 사용할수 있음 ## 프론트엔드 중심 개발의 단점
- 프론트엔드 중심의 개발이라 하더라도 데이터 제공을 위한 서버는 필요
- 데이터 제공 서버는 주로 Rest API로 개발되기 때ㅔ문에 백엔드 작업은 당연히 존재
- 프론트 엔드 중심 개발을 하더라도 콘텐츠가 검색 엔진에 노출될 수 있도록 검색 엔진 최적화를 위해 SSR을 접목하기도함
새로운 웹 개발 트렌드
- 자바 언어의 대안 등장 (코틀린)
- 백엔드 개발 및 운영 환경의 변화
- 프론트엔드 중심 개발로의 이동
- 스프링 프레임 워크
- 전반적인 웹 프로그래밍 개발의 큰 그림을 이해하면서 jsp에 대한 최소한의 이해를 겸비하는것이 필요 #자바 웹 개발 환경
서블릿 컨테이너
- 웹 어플리케이션을 구동하는 서버
- 서버 컴퓨터가 WAS로 동작하려면 서블릿 컨테이너 필요
- 실제 서비스 시스템을 구축할 때는 정적 콘텐츠 서비스를 위한 웹 서버와 WAS를 병행해 운영하며 설정을 통해 상호 연동되는 구조
배포 프로세스
-배치라고도 하며, 개발된 결과물을 실제 사용자에게 전달하는 작업
데브옵스
- 개발과 운영의 합성어
- 규모가 큰 소프트웨어의 신속한 개발과 지속적 유지보수,배포등의 운영을 병행하기 위한 노력
- 빈번한 서비스 배포, 웹 기반의 서비스 형태가 필수요소로 자리잡음
- 이러한 새로운 전략을 위해 개발 팀과 운영팀이 병홥되어 개발,테스트,배포,운영에 이르는 애플리케이션 생명주기 개발
데브옵스 장점
- 빠른속도 (계획부터 배포까지 작업 속도를 빠르고 효율적으로 제공,시장 변화에 빠르게 대처하고 비즈니스 성과 창출 가능)
- 빠른 배포 (새로운 기능의 릴리즈와 오류 수정 속도가 빨라져 고객의 요구에 빠르게 대응)
- 안정성(지속적 통합, 지속적 전달,모니터링,로깅을 통해 안정적인 서비스 품질 제공)
- 확장 가능성( 복잡하거나 변화하는 시스템을 효율적으로 관리)
- 협업 강화(개발 팀과 운영 팀의 긴밀한 협력, 책음 공유->비효율을 줄이고 시간 절약)
데브옵스 구성요소
- SCM(소스코드 버전 관리 ,깃)
- CI(빌드와 테스트의 통합)
- CD(지속적인 배포, 원하는 시점에 바로 배포가 가능한 설정 필요)
- CM(서비스 설정의 통합 관리,운영서버OS,라이브러리 버전,컴파일 등 포함)