Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
JBoss EAP on Azure
1. JBoss EAP on Azure App Service
(Azure App Service를 사용한 JBoss EAP 프로젝트)
| PS본부 성동호 부장
| 2021.10
2. JBoss EAP on Azure App Service
⁻ 왜 JBoss & Azure로 개발하는가?
⁻ JBoss EAP & Wildfly
⁻ Azure App Service
⁻ Eclipse
⁻ Git & Github
1. 개발 환경 소개
⁻ Eclipse & Maven
⁻ Eclipse & GIT
⁻ Eclipse & JBoss
⁻ Eclipse & Github
2. 개발 & 형상관리
⁻ Azure App Service 설정
⁻ Database 설정
⁻ JBoss & Github 설정
⁻ JBoss Datasource 설정
3. 인프라 설정
⁻ 배포 (Deploy)
⁻ 테스트 페이지 확인
⁻ 수정 재배포
⁻ Q & A
4. 서비스 배포
4. 1.
⁻ 왜 JBoss & Azure 로 개발하는가?
⁻ JBoss EAP & Wildfly
⁻ Azure App Service
⁻ Eclipse
⁻ Git & Github
개발 환경 소개
5. 왜 JBoss & Azure로 개발하는가?
기존 방식 VS 오픈소스 & Azure 방식
✓ 기존 방식
• 개발자 PC -> 저장소 & 형상관리 시스템 구축 (비용/소요시간 발생)
• 저장소 -> 스테이징 시스템 구축 (비용/소요시간 발생)
• 저장소 -> 실운용 시스템 구축 (비용/소요시간 발생)
• 구축 후 각 SW 구입 설치/설정 (비용/소요시간 발생)
• 기타 소요 비용 ( 네트워크, 방화벽, 도메인, 인증서, 시스템 폐기/재할당 비용 등등 )
• 기타 소요 시간 ( 부서간 협조, HW 불량시 교체 시간, 서버 자원 할당 요청 등등)
✓ JBoss & Azure 방식
• Java EE Full 스펙이며 가장 쉽게 접근할 수 있는 WAS
• 기업환경에 맞는 성능과 안정성, 지원 조직을 가진 오픈소스 WAS
• 개발자 PC만 준비하면 모든 것이 완료 (이클립스, Git, Github, Azure 인프라)
• Github / Azure를 사용한 손쉬운 자동화 CI/CD
• Azure 에서 필요한 SW를 선택하면 인프라 설치완료 (자원 크기, 사용 시간에 따라 차등유료)
• Azure로 테스트에 집중
1. 개발 환경 소개
6. JBoss EAP & Wildfly
대표적인 오픈소스 WAS
✓ Red Hat 사의 대표 오픈소스 Web Application Server
✓ JAVE EE 8 스펙 전체 지원 ( JSR 366 )
• 엠베디드 웹서버 (JSP/Servlet 컨테이너), 캐쉬, 클러스터링, 트랜젝션, 메시징, EJB, RESTful Webservice, Websocket,
✓ Tomcat의 경우 JAVA EE 스펙에서 JSP & Servlet 부분만 구현
✓ 현재 JAVA EE 는 JAKARTA EE로 변경 ( 관리 주체 변경 )
✓ JBoss 7.3 부터 JAKARTA EE 지원
✓ 커뮤니티 버전인 Wildfly의 사용자 경험을 기반으로, 기업이 안정적으로 사용할 수는 기업 버전인 JBoss EAP 출시
1. 개발 환경 소개
7. Azure App Service
MS 클라우드 컴퓨팅 플랫폼 소개
✓ Microsoft 클라우드 컴퓨팅 플랫폼 및 인프라스트럭처 서비스
✓ Azure App Service를 사용하면 모든 플랫폼 또는 디바이스에서 엔터프라이즈급 웹 및 Mobile Apps를 쉽고 빠르게 만들
고 확장성 및 안정성이 뛰어난 클라우드 인프라를 배포할 수 있게 해주는 통합 Cloud Service로 앱을 보다 빠르게 만들
수 있습니다. - MS Azure App Service 소개문
✓ Node.js, ASP.NET, .NET Core, Python, Java, PHP - 지원 언어 ( 이외 다수 지원 )
✓ 개발자는 소스코드만 개발하고 나머지는 Azure에서 인프라(HW/SW) 모두 제공 - DevOps, PaaS 개념
✓ App Service 이외에서 전통적인 VM 환경도 지원, SaaS도 지원
1. 개발 환경 소개
8. Eclipse
오픈소스 대표 개발툴 이클립스 소개
✓ 이클립스 재단에서 만든 JAVA 기반 통합환경개발툴
✓ 여러 OS / 개발언어를 한번 실행으로 개발지원 ( 복수 툴 실행 불필요 )
✓ 방대한 플러그인 지원 ( C, C++, Python, Ruby, Portran, PHP, Action Script, Apatana )
✓ 크로스 컴파일 지원
✓ JRE 내장
✓ JBoss EAP / Wildfly / Tomcat 등 실행환경을 직접 관리 (다운로드/실행/배포)
1. 개발 환경 소개
9. Git & Github
오픈소스 대표 버전관리시스템 소개
✓ Git : 리누스 토르발스가 개발한 분산형 버전관리시스템 (또는 형상관리시스템)
✓ Git : 빠른 속도, 분산형 저장소 지원, 가벼운 브랜치, 병합 구조
✓ Git : 로컬 레포지토리 (저장소) 지원으로 오프라인에서 개발 가능, 이후 원격 저장소에 업데이트
✓ Github : 대표적인 무료 Git 저장소, https/ssh 지원, Github Action (CI/CD 워크플로우 자동화 기능) 지원
✓ Github : 2018.6.4 MS에서 Github를 인수
1. 개발 환경 소개
10. 2.
⁻ 개발 프로세스
⁻ Eclipse & Maven
⁻ Eclipse & Git
⁻ Eclipse & JBoss
⁻ Eclipse & Github
개발 & 형상관리
11. 개발 프로세스
이클립스, Github 를 사용한 프로세스 요약
✓ 이클립스에서 Maven Project 생성 후 코딩
✓ 생성된 코드를 로컬 JBoss에서 테스트
✓ 생성된 소스를 Git 로컬 레포지토리에 저장
✓ Git 로컬 레포지토리에 있는 코드를 Github에 저장
✓ Azure App Service 에서 JBoss 리소스 생성
✓ Azure App Service가 Github에서 Maven install 명령을 수행 후 생성된 war 파일을 가져와서 JBoss에 deploy 수행
2. 개발 & 형상관리
12. Eclipse & Maven
이클립스에서 샘플 프로젝트를 생성
✓ New -> Project -> Maven Project -> packaging war / 기타정보 입력 -> Finish
✓ webapp/index.jsp 생성
✓ webapp/WEB-INF/jboss-web.xml 생성
✓ webapp/WEB-INF/web.xml 생성
✓ 참고사항 1) 이클립스 프로젝트 생성 전 모든 파일 인코딩이 UTF-8로 설정 변경 필요 (윈도우인 경우)
✓ 참고사항 2) 이클립스 Maven 프로젝트 생성 후 JAVA 버전 1.8로 설정 변경 필요 (Java Build Path / Project Facets)
2. 개발 & 형상관리
13. Eclipse & Git
이클립스 샘플 코드를 생성 후 Git local repository에 저장
✓ 이클립스 개발툴에 생성된 Maven Project를 선택
✓ 팀 -> 쉐어 프로젝트-> Configure Git Repository -> Create ... -> Finish
✓ Use or create repository in parent folder of project 체크 : workspace에 프로젝트명으로 레포지토리 생성
✓ 참고사항 : 저장소/프로젝트명/프로젝트명으로 생성되지 않게 주의
2. 개발 & 형상관리
14. Eclipse & JBoss
생성된 샘플 프로젝트를 개발 머신의 JBoss에서 테스트
✓ 생성 프로젝트 -> Run On Server -> JBoss EAP 또는 Wildfly 선택
✓ 웹브라우저로 생성 페이지 확인
✓ jboss-web.xml 에 사용할 context 네임을 기술(예: /fp1), 없을 경우 war 파일명을 따라감
✓ jboss-web.xml 사용 시 http://localhost:8080/fp1 , 없을 경우 http://localhost:8080/fp1-0.0.1-SNAPSHOT
✓ 만약 루트 컨텍스트네임 (도메인명만으로 바로 실행이 필요한 경우) "/" 로 기술
2. 개발 & 형상관리
15. Eclipse & Github
Git local repositor에 저장된 프로젝트를 Github에 올림
✓ github.com 에서 생성된 계정에 로그인
✓ 패스워드를 대신할 토큰 생성
✓ Create New Repository 생성 후 이클립스에서 생성한 프로젝트와 동일한 Repository 생성
✓ 이클립스에서 생성한 프로젝트를 commit & push 선택 후 웹브라우저로 업로드된 파일 확인
✓ origin, URI, 접속정보 입력
✓ 접속정보의 User는 이메일주소 형식
✓ Password는 Gihub / Settings / Developer settings 에서 생성된 토큰값
2. 개발 & 형상관리
16. 3.
⁻ Azure App Service 설정
⁻ Database 설정
⁻ JBoss & Github 설정
⁻ JBoss Datasource 설정
인프라 설정
17. Azure App Service 설정
App Service 만들기
✓ 홈 > App Services > App Service 만들기
✓ 구독 ㄴ 리소스 그룹 > 이름 (하위도메인 네임) > 게시 (코드) > 런타임 스택 (java 8) > Java 웹서버 스택 (JBoss EAP 7)
✓ 운영 체제 (Linux) > 지역 (Korea Central) > 검토 + 만들기 > 만들기
✓ 기본 웹앱 배포 1분 정도 소요
✓ 리소스로 이동 -> 오른쪽 상단 URL 확인
3. 인프라 설정
18. JBoss & Github 설정
초기 상태인 App Service에 Github 연결
✓ 좌측 메뉴 중간 > 배포 센터
✓ 소스 : 지속적인 배포 ( CI/CD ) -> GitHub 선택
✓ 다음으로 로그인 : Github 유저 정보 입력
✓ 조직 : 유저명, 리포지토리 : 개발 소스 저장소 선택, 분기 : 마스터
✓ 최상단 메뉴 저장 클릭 -> 배포 작업 바로 수행 -> 좌측 메뉴 상단 개요 클릭
3. 인프라 설정
19. Database 설정
WAS에 필요한 MySQL 생성
✓ Portal > 리소스 만들기 > Azure Database for MySQL > 단일 서버 > 기본 정보 입력 > 만들기
• 연결 보안 > 퍼블릭 네트워크 액세스 거부 (아니요) > Azure 서비스 방문 허용 (예)
・ 방화벽 규칙에 현재 사용 IP 등록
・ SSL 연결 적용 (사용 안함)
• 연결 문자열에서 JBoss에서 사용할 JDBC 문자열을 확인
3. 인프라 설정
20. JBoss Datasource 설정
Azure App Service JBoss에서 Datasource 생성 방법을 기술
✓ FTP 또는 사용가능한 방법으로 /home/site/deployments/tools/ 아래에
✓ start_script.sh, mysql-module.xml, mysql-driver.jar, jboss.cli 업로드
✓ Portal > App Service > 생성 리소스명 > 구성 > 일반 설정 > 시작 명령
✓ /home/site/deployments/tools/startup_script.sh 등록 > 저장
3. 인프라 설정
23. Test Page 확인
웹브라우저로 배포된 소스를 확인
✓ 웹브라우저 확인
✓ 도메인만으로 접속 확인
✓ 도메인 확인 페이지 확인
4. 서비스 배포
24. 수정 재배포
변경 사항이 반영되는 것을 확인 후 수동 재배포
✓ jsp 파일 변경 후 Github commit 시 자동 재배포, 자동 반영
✓ 수정 사항을 웹브라우저로 확인
✓ jboss-web.xml 변경 시 수동 재배포 필요
✓ 수동 재배포를 확인
4. 서비스 배포