웹 어플리케이션 서버 개발 과정(Servlet, maven)

mohadang·2023년 7월 15일
0

Road to Backend

목록 보기
5/21
post-thumbnail

1. Java, maven, Tomcat 설치 및 경로 설정

maven : Java 프로젝트를 빌드/패키징(외부에 배포할 수 있도록) 작업 할 수 있도록 도와주는 SW. 개발에 필요한 라이브러리를 알아서 다운로드. maven 프로젝트의 설정 파일은 pom.xml이다. pom.xml에 추가된 라이브러리의 정보가 기록되어 있고 이 라이브러리들을 다운로드 받아준다.

Java는 각 플랫폼에 맞게 인스톨러를 다운로드 받아 실행시키면 설치된다.

maven, tomcat의 경우 인스톨러가 아닌 압축 파일 형태이며 다운로드 받은 후 압축을 해제해야 한다.

다운로드 받은 후 커맨드 창이나 다른 프로그램이 Java, maven, tomcat 관련 도구를 실행할 수 있도록 환경 변수를 설정 해야한다.

환경 변수 추가.

Path의 환경 변수 편집.

2. maven webapp 프로젝트 생성

IntelliJ를 사용하여 maven webapp 프로젝트를 생성할 수 있다.

main : maven은 기본적으로 모든 코드를 main이라는 디렉터리에 관리하도록 되어있다.

java : maven에서 소스를 관리할 수 있는 디렉터리는 기본적으로 java이며 여기에 java 클래스들을 보관한다. 따라서 java라는 디렉터리 이름을 함부로 바꾸면 안된다.

IntelliJ 내부에는 maven이 내장되어 있다. 프로젝트가 어떤 maven을 사용할지 설정할 수 있다.

maven에서 사용할 수 있는 작업.

3. maven webapp 프로젝트에 라이브러리 추가(Servlet, JSP)

모든 서블릿 프로젝트(서블릿 라이브러리를 추가한 maven 프로젝트)는 WEB-INF 디렉터리, web.xml, index.jsp를 가진다.

web.xml : 서블릿의 설정 파일. xml 파일이 아니라 어노테이션 방식으로도 환경 설정을 할 수 있다.

index.jsp : 초기 페이지

4. 패키지 생성 & 서블릿 클래스 생성

패키지를 생성하고 자바 클래스를 패키지 안에 생성하여 구현해준다. maven은 배포시 패키지로 만들어 배포한다.

5. 서블릿 클래스 등록(API 맵핑 작업)

클라이언트에게 API 인터페이스를 제공하기 위해 함수 맵핑 작업이 필요하다.

첫번쨰 방법 - web.xml에 등록

url-pattern : 외부에서 호출할때 /HelloServlet 으로 접근

두번째 방법 - 어노테이션

첫번째 방법은 관리가 매우 번거롭다. 따라서 대부분 어노테이션을 사용하여 관리 할 것 같다.

6. Tomcat 서버 배포(WAS 서버 배포)

maven 프로젝트에 Tomcat 서버 설정을 추가한다. Tomcat 서버 설정 추가시 설치했던 Tomcat 경로를 지정해 준다.

maven webapp과 Tomcat 서버가 연동되어 배포가 될 수 있도록 설정되어야 한다. 설정되어 있지 않으면 다음과 같은 경초 문구가 출력된다.

maven webapp이 Tomcat 서버에 war 파일로 배포될 수 있도록 설정. exploded는 배포시 maven webapp을 사용할 수 있도록 압축 해제까지 처리해준다.

코드 수정 후 바로 서버에 반영되지 않을 경우 배포 경로를 확인해야 한다. 프로젝트 외부에 패키징 되어있는 디렉터리로 지정되어 있을 경우 코드를 수정하여도 결과가 반영 안될 것이다

현재 프로젝트를 작업하고 있는 디렉터리 경로로 변경해야 한다.

IntelliJ에서 Tomcat 서버 실행

실행 결과

7. JSP(템플릿) 파일 추가

JSP는 얼핏 HTML 파일과 비슷하지만 HTML 파일이 아니다. 서블릿 라이브러리가 JSP라는 템플릿 파일을 해석하여 HTML 파일을 생성할 수 있다. JSP 파일을 사용하면 복잡하고 많은 HTML 파일을 생성할 수 있다.

서버 개발 환경

서버 개발시 개발 환경도 중요한 고려 사항이다. 서버 개발 환경과 운영 환경을 나누어야 한다. 구현, 배포, 테스트, 형상 환경을 지원할 수 있어야 한다. 운영 환경은 서비스를 모니터링 하고 제어할 수 있어야 한다.

local env : 개발자 PC의 개발 환경.

dev env : 개발 환경. 각 개발자들이 개발한 모듈 또는 기능 수정을 적용하여 완성된 서비스를 테스트.

integration evn : 통합 환경. 각 팀의 dev env의 개발 내용을 통합하여 테스트.

QA env : QA 엔지니어에 의해 테스트 되는 환경. QA 엔지니어들을 위해 모니터링, 로깅, 툴 지원 역시 개발 고려 사항일 것이다.

Stagin env : 운영 환경과 거의 동일한 환경. 실제 운영과 같은 환경. 비 기능적 테스트 수행(보안, ).

Production env : 사용자가 사용하는 환경.

패키징된 어플리케이션을 각 서버에 수작업으로 배포하기는 어렵다. 이를 위해 CI/CD라는 기술을 적용하여 자동화된 배포를 할 수 있어야 한다. 백엔드에서는 배포 역시 중요한 고려 사항이다.

톰캣의 역할 ?

사실 서비스를 할때 webapp만 실행하면 되지 않을까 ? 톰캣은 어떤 역할을 할까 ?

webapp를 관리할 수 있는 여러 기능을 가지고 있다.

  • 현재 webapp 상태 확인
  • 여러 WAR 파일을 Tomcat에 추가(배포) 또는 제거
  • 특정 webapp 활성화/비활성화
  • 시스템 진단

ETC

artifacts : 결과물

profile
mohadang

0개의 댓글