본문으로 건너뛰기

개발환경 구축

정보처리기사 목차서버 프로그램레슨 150 / 233

목차

개발환경 구축은 프로그램을 만들고 돌릴 하드웨어와 소프트웨어를 미리 고르고 갖추는 일입니다. 서버는 웹 서버·WAS·DB 서버·파일 서버로 일을 나누고, 서버마다 운영체제 위에 JVM·WAS·DBMS 같은 소프트웨어를 패키지 관리자로 깝니다.

개발자 PC에서 잘 돌던 프로그램이 운영 서버에 올리자 멈추는 일이 있습니다. 서버에 깔린 Java의 판이 다르거나, 프로그램이 기대는 패키지 하나가 빠진 경우입니다. 그래서 개발을 시작하기 전에 어떤 서버를 두고 그 위에 무엇을 어떤 판으로 깔지 정해 둡니다. 아래 그림은 코드가 개발자 PC에서 운영 서버까지 가는 길과, 서버 넷이 요청을 나눠 맡는 모습을 보입니다.

6단계 중 1단계. 개발자 PC에서 짠 코드는 형상 관리 서버에 모이고, 빌드 서버가 실행할 묶음으로 만들어 운영 서버에 놓습니다.

1하드웨어 — 서버 넷이 일을 나눈다

개발자 PC에서 짠 코드는 형상 관리 서버에 모이고, 빌드 서버가 실행할 묶음으로 만들어 운영 서버에 놓습니다. 형상 관리와 빌드는 1과목 8단원에서 배웁니다.

운영 쪽은 요청을 받는 서버를 하는 일에 따라 나눕니다.

서버맡는 일
웹 서버(web server)브라우저의 요청을 맨 먼저 받고, 만들어 둔 파일을 돌려준다
WAS(Web Application Server, 웹 애플리케이션 서버)프로그램을 돌려 요청마다 다른 결과를 만든다
DB 서버(database server)DBMS를 돌려 데이터를 저장하고 찾아 준다
파일 서버(file server)사용자가 올린 파일을 모아 두고 내준다

서버를 나눠 두면 요청이 몰리는 서버만 골라 늘릴 수 있습니다.

2웹 서버와 WAS — 정적 콘텐츠와 동적 콘텐츠

그림의 두 요청은 같은 웹 서버로 들어오지만 길이 갈립니다. logo.png 그림이나 HTML(웹 페이지를 적는 언어) 파일처럼 미리 만들어 두어 누가 언제 청해도 같은 파일을 정적 콘텐츠(static content)라 합니다. 웹 서버는 이 파일을 꺼내 바로 돌려줍니다.

101번 학생의 성적 화면은 청할 때마다 프로그램을 돌려 만듭니다. 이런 결과를 동적 콘텐츠(dynamic content)라 합니다. 웹 서버는 이 요청을 WAS에 넘기고, WAS가 DB 서버에서 점수 셋(85·80·75)을 가져와 평균 80을 계산합니다.

가르는 기준웹 서버WAS
돌려주는 것정적 콘텐츠(만들어 둔 파일)동적 콘텐츠(프로그램이 만든 결과)
프로그램을 돌리나돌리지 않는다돌린다
DB 서버에 묻나묻지 않는다필요한 데이터를 묻는다

정적 파일을 웹 서버가 맡으면, 프로그램을 돌리는 WAS가 그림 파일 요청에 시간을 쓰지 않습니다.

3소프트웨어 — 운영체제 위에 쌓고 패키지 관리자로 깐다

서버마다 운영체제를 먼저 깔고, 그 위에 맡은 일의 소프트웨어를 얹습니다.

서버운영체제 위에 까는 것예
웹 서버웹 서버 프로그램Apache·Nginx
WASJVM과 WAS 프로그램Tomcat·JEUS
DB 서버DBMSOracle·MySQL

JVM(Java Virtual Machine)은 Java로 만든 프로그램을 돌리는 실행기입니다. Tomcat처럼 Java로 만든 WAS는 JVM 위에서 돌아, JVM이 먼저 깔려 있어야 합니다. 개발자 PC에는 IDE와 형상 관리·빌드 도구 같은 개발 도구를 깝니다.

소프트웨어는 프로그램과 설정 파일을 한데 묶은 패키지(package)로 깝니다. 패키지 관리자(package manager)는 저장소(repository)에서 패키지를 받아 깔고, 그 패키지가 기대는 다른 패키지(의존 패키지)까지 찾아 함께 깝니다.

가르는 기준aptyum
쓰는 LinuxDebian·UbuntuRed Hat 계열
Apache 깔기apt install apache2yum install httpd

같은 Apache도 Linux 계열마다 패키지 이름이 다릅니다. 의존 패키지는 관리자가 찾아 주니 하나씩 손으로 깔지 않습니다.

예제

한 대학 홈페이지에 요청 넷이 들어왔습니다. 각각 어느 서버가 맡는지 먼저 골라 보세요.

(가) 첫 화면 맨 위의 학교 로고 그림을 보냅니다.

(나) 수강 신청 단추를 누른 학생이 신청할 수 있는지 따져 결과 화면을 만듭니다.

(다) 학생 표에서 3학년인 학생의 행을 찾아 돌려줍니다.

(라) 학생이 올린 과제 보고서 파일을 모아 둡니다.

가르는 기준맡는 서버사례
홈페이지에 만들어 둔 파일을 그대로 보낸다웹 서버(가)
요청마다 프로그램을 돌려 결과를 만든다WAS(나)
표에서 행을 찾고 저장한다DB 서버(다)
사용자가 맡긴 파일을 보관한다파일 서버(라)

(가)와 (나)는 같은 웹 서버로 들어오지만, 프로그램이 필요한 (나)만 WAS로 넘어갑니다. (가)와 (라)는 둘 다 파일이지만 (가)는 홈페이지를 이루는 파일이고 (라)는 사용자가 맡긴 파일입니다.

시험 포인트

  • 필기: 개발환경은 하드웨어(웹 서버·WAS·DB 서버·파일 서버)와 소프트웨어(운영체제·JVM·웹 서버·WAS·DBMS·개발 도구)로 나눠 고릅니다. 웹 서버는 정적 콘텐츠를 바로 돌려주고, WAS는 프로그램을 돌려 동적 콘텐츠를 만들며 데이터는 DB 서버에 묻습니다. 패키지 관리자는 저장소에서 패키지와 의존 패키지를 함께 받아 깔며, Debian·Ubuntu는 apt를, Red Hat 계열은 yum을 씁니다. 오답 보기는 둘의 일을 뒤바꿉니다 — '웹 서버가 DB 서버에 물어 화면을 만든다', 'Java로 만든 WAS는 JVM 없이 돈다'.
  • 실기: 웹 서버(Web Server)·WAS(Web Application Server)·DB 서버(Database Server)·파일 서버(File Server)·JVM(Java Virtual Machine)·패키지 관리자(Package Manager)로 씁니다.

확인 문제

1. 어느 쇼핑몰에 들어온 요청 넷입니다. 웹 서버가 WAS에 넘기지 않고 혼자 돌려줄 수 있는 것을 고르세요.

  • ① 검색어에 맞는 상품 목록 화면
  • ② 반품 안내 쪽의 미리 만들어 둔 HTML 파일
  • ③ 로그인한 회원의 주문 내역 화면
  • ④ 장바구니에 담은 물건값의 합계 화면
정답

②입니다. 미리 만들어 두어 누가 청해도 같은 파일은 정적 콘텐츠라, 웹 서버가 프로그램 없이 바로 돌려줍니다.

  • ① 검색어마다 목록이 다릅니다. 프로그램이 상품 표를 찾아 만들어야 하니 WAS의 몫입니다.
  • ③ 회원마다 주문 내역이 다릅니다. WAS가 DB 서버에 그 회원의 주문을 물어 만듭니다.
  • ④ 담은 물건이 바뀔 때마다 합계를 다시 계산해야 합니다. 계산은 WAS가 돌리는 프로그램이 합니다.

2. 쇼핑몰 서버들이 맡은 일입니다. (가)~(라)에 맞는 이름을 쓰세요. (가)·(다)·(라)는 한글 이름과 영문으로, (나)는 영문 약어와 원어로 함께 씁니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 브라우저의 요청을 맨 먼저 받습니다. 미리 만들어 둔 상품 사진·HTML은 직접 내주고, 계산이 필요한 요청은 안쪽으로 넘깁니다.
  • (나) 넘겨받은 요청마다 프로그램을 돌립니다. 할인을 계산하고, 필요한 데이터는 안쪽 서버에 물어 회원별 화면을 만듭니다.
  • (다) 주문 표의 행을 저장하고, 조건에 맞는 행을 찾아 돌려줍니다.
  • (라) 판매자가 올린 상품 설명서 원본을 보관하고 내려받게 해 줍니다.
정답

받는 답: (가) 웹 서버(Web Server) · (나) WAS(Web Application Server) · (다) DB 서버(Database Server) · (라) 파일 서버(File Server)

(가)의 실마리는 '요청을 맨 먼저 받고 만들어 둔 파일은 직접 내준다', (나)는 '요청마다 프로그램을 돌린다', (다)는 '표의 행을 저장하고 찾는다', (라)는 '사용자가 올린 파일을 보관한다'입니다.

  • 같은 이름의 다른 꼴: (나) 웹 애플리케이션 서버 — 약어를 푼 한글 이름입니다. 문제가 영문 약어와 원어로 물었습니다.
  • 틀리는 꼴 WAS — (가)에: 프로그램을 돌려 결과를 만드는 서버입니다. (가)는 만들어 둔 파일만 내주고 계산은 넘깁니다.
  • 틀리는 꼴 웹 서버 — (나)에: 만들어 둔 파일을 내주는 서버입니다. (나)는 요청마다 프로그램을 돌립니다.
  • 틀리는 꼴 웹 서버 — (라)에: 웹 서버가 내주는 것은 홈페이지를 이루는 파일입니다. (라)는 사용자가 맡긴 파일을 보관합니다.

3. 새로 빌린 Ubuntu 서버에 Java로 만든 WAS를 깔려고 합니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) WAS보다 먼저 깔려 있어야 하는, Java로 만든 프로그램을 돌리는 실행기의 이름을 영문 약어와 원어로 쓰세요.
  • (나) 저장소에서 WAS를 받아, WAS가 돌려면 있어야 하는 다른 묶음까지 찾아 함께 깔아 주는 도구가 있습니다. 이 도구의 갈래 이름을 한글 이름과 영문으로 쓰고, 이 서버에서 쓰는 그 도구의 명령 이름도 쓰세요.
정답

받는 답: (가) JVM(Java Virtual Machine) · (나) 패키지 관리자(Package Manager), apt

(가)의 실마리는 'Java로 만든 프로그램을 돌리는 실행기', (나)는 '저장소에서 받아 기대는 묶음까지 함께 깐다'와 'Ubuntu'입니다.

  • 틀리는 꼴 Tomcat — (가)에: Java로 만든 WAS 프로그램의 이름입니다. (가)는 그 WAS 아래에서 Java 프로그램을 돌리는 실행기입니다.
  • 틀리는 꼴 yum — (나)의 명령에: Red Hat 계열 Linux가 쓰는 패키지 관리자입니다. Ubuntu는 Debian 계열이라 apt를 씁니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로