서버개발 SpringBoot

로컬 서버 구축 / 서버 구조 / 서버와 클라이언트

아뵹젼 2022. 3. 29.

비트나미 이용해서 local환경에 WAMP 설치

  • WAMP 는 윈도우 환경에서 amp 서버를 구동할 수 있게 해준다. 즉, amp 를 각각 설치하지 않아도 wamp 을 사용하면 한 번에 구성할 수 있도록 도와주는 것이다.
  • AMP 란?  
    • apache, mysql, php 의 약자이다.
    • apache : http통신을 이용해서 내 컴퓨터 자원에 접근할 수 있도록 만들어주는 http 웹서버 프로그램
    • mysql : 데이터베이스 프로그램
    • php : 웹 개발 언어
  • local에서 웹서버 작동 확인(비트나미 화면, phpinfo)
    • WAMP 를 실행하면 다음과 같은 창이 뜨고, Manage Servers 탭에서 웹 서버에 연결이 되었음을 확인할 수 있다.
    • 웹서버가 실행되고 있는지 확인하기 위해 localhost/phpinfo.php 에 접속하면 다음과 같은 phpinfo 를 확인할 수 있다. 

 

 

리눅스 환경에 AMP 설치

  • 가상 머신(VirtualBox)설치 후 ubuntu환경 제작
  • 가상 머신에 리눅스 계열 OS 설치
  • 리눅스에 APM 소스(수동, 컴파일) 설치
    • 우분투에선 소스설치로 정말 필요한 기능만을 설치하도록 한다.
    • apache, php, mysql 을 각각 설치해주면 된다. 
  • phpinfo 확인

 

 

핵심 키워드

  • 서버와 클라이언트 관계
    • 클라이언트는 다른 프로그램에게 서비스를 요청하는 프로그램이며, 서버는 그 요청에 대해 응답을 해주는 프로그램이다. 서버는 웹페이지, 사이트, 또는 앱을 저장하는 컴퓨터다.
    • 클라이언트는 일반적인 웹 사용자의 인터넷이 연결된 장치들과 이런 장치들에서 이용가능한 웹에 접근하는 소프트웨어(파이어폭스 또는 크롬 과 같은 웹 브라우저)이다.
    • 서버와 클라이언트는 1:N 구조로 연결되어 있다.
  • 서버의 동작 방식 
    1. 서버는 클라이언트의 요청을 받고, 서버는 이를 백엔드 언어에 전달한다.
    2. 백엔드 언어는 쿼리문을 통하여 데이터베이스에 데이터를 요청한다.
    3. 받아온 데이터를 서버의 요청에 맞게 가공한 후 웹서버에게 전달하고, 웹서버는 클라이언트에게 전달하게 된다.
  • 서버의 구조 - 웹서버, Back-End Language, DB (DBMS)
    • 웹서버
      • apache :
        • 프로세스 기반 접근 방식으로 하나의 스레드가 하나의 요청을 처리하는 구조
        • 매 요청마다 스레드를 생성 및 할당해야 하기 때문에 리소스를 많이 잡아먹음
        • Linux 및 BSD를 포함한 모든 Unix 계열 OS 지원, Windows 모두 지원
      • nginx :
        • 이벤트 중심 접근 방식으로 하나의 스레드 내에서 여러 요청을 처리하는 구조
        • 거의 모든 Unix 계열 OS 지원, Windows는 부분적으로 지원
    • Back-End Language
      • java(spring) :
        • MVC 패턴
        • 프레임워크 특화 기능들이 많아서 간단한 컴포넌트로 복잡한 애플리케이션을 구성할 수 있음
        • 관점 지향 프로그래밍(AOP) - 관심사 분리 → 코드를 깔끔하게 작성 가능, 재사용성 올라감
      • python(django) :
        • MVT패턴(Model, View, Template)
        • python의 다양한 라이브러리를 사용 가능하여 개발 속도가 빠르고 생산성이 큼
        • 인터프리터 언어라서 실행 속도가 느림 -> 성능이 떨어짐
      • javascript(nodejs) :
        • 싱글그레드, 비동기 IO 처리에 기반한 빠른 속도
        • 싱글 스레드 모델이라 하나의 작업에 시간이 오래 걸리면 시스템 전체의 성능이 급격히 낮아진다.
        • 불편한 비동기 프로그래밍 모델 -> Async & Await 모듈
    • DB (DBMS)
      • mysql :
        • 오픈 소스로 무료로 사용 가능
        • 대중적
      • oracle
        • 대규모 데이터베이스를 지원, 그러나 비쌈
        • 고성능 트랜잭션 처리를 제공하여 속도가 빠름
        • SQL문을 실행하는 가장 효율적인 방법을 선택
  • 웹 서버 VS 웹 애플리케이션 서버
    • 웹 서버 : HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당, 정적인 컨텐츠 제공, 동적인 컨텐츠 제공을 위한 요청을 WAS(웹 애플리케이션 서버) 에 전달, WAS가 처리한 결과를 클라이언트에게 전달
    • 웹 애플리케이션 서버 : 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버
  • 로컬호스트(localhost)
    • 로컬호스트는 컴퓨터 네트워크에서 사용하는 루프백 호스트명으로, 자신의 컴퓨터를 의미
    • 로컬호스트의 IPv4에서의 IP 주소는 127.0.0.1

 

댓글