2021년 12월 08일(수)
l 14:00 ~ 14:20 개발 & 인프라 소개
l 14:20 ~ 14:35 개발과 형상관리 (Github Action)
l 14:35 ~ 15:00 사용 인프라 (AZURE APP Service)
l 15:00 ~ 15:20 서비스 런칭 (Deploy & Service)
l 15:20 ~ 15:30 DevOps /Closing
1. JBoss EAP on Azure App Service
(Azure App Service를 사용한 JBoss EAP 프로젝트)
| PS본부
| 2021.12
2. JBoss EAP on Azure App Service
⁻ 왜 Azure & JBoss 로 개발하는가?
⁻ JBoss EAP & Wildfly
⁻ Azure App Service
⁻ Github
1. 개발 환경 소개
⁻ App Service 개발 프로세스
⁻ JBoss Eclipse Plugin 설정
2. 개발환경 & 형상관리
⁻ Azure Database 생성
⁻ Azure App Service 설정
⁻ JBoss Datasource 설정
3. 인프라 설정(Demo)
⁻ 서비스 배포 (Deploy)
⁻ Spring Datasource 설정
4. 서비스 배포(Demo)
3. JBoss EAP on Azure App Service
⁻ Blue-Green 배포
⁻ Canary 배포
⁻ Q & A
5. DevOps 배포 전략(Demo)
4. 1.
⁻ 왜 JBoss & Azure 로 개발하는가?
⁻ JBoss EAP & Wildfly
⁻ Azure App Service
⁻ Git & Github
개발 환경 소개
5. 왜 JBoss & Azure로 개발하는가?
기존 방식 VS 오픈소스 & Azure 방식
✓ 기존 방식
• 개발자 PC -> 저장소 & 형상관리 시스템 구축 (비용/소요시간 발생)
• 저장소 -> 스테이징 시스템 구축 (비용/소요시간 발생)
• 저장소 -> 실운용 시스템 구축 (비용/소요시간 발생)
• 구축 후 각 SW 구입 설치/설정 (비용/소요시간 발생)
• 기타 소요 비용 ( 네트워크, 방화벽, 도메인, 인증서, 시스템 폐기/재할당 비용 등등 )
• 기타 소요 시간 ( 부서간 협조, HW 불량시 교체 시간, 서버 자원 할당 요청 등등)
• 전통적인 배포 방식으로 서비스 다운타임 및 배포 오류시 긴 롤백시간 소요
1. 개발 환경 소개
6. 왜 JBoss & Azure로 개발하는가?
기존 방식 VS 오픈소스 & Azure 방식
✓ Azure & JBoss 방식
• Java EE Full 스펙이며 가장 쉽게 접근할 수 있는 WAS
• 기업환경에 맞는 성능과 안정성, 지원 조직을 가진 오픈소스 WAS
• 개발자 PC만 준비하면 모든 것이 완료 (이클립스, Git, Github, Azure 인프라)
• Github / Azure를 사용한 손쉬운 자동화 CI/CD
• Azure 에서 필요한 SW를 선택하면 인프라 설치완료 (자원 크기, 사용 시간에 따라 차등유료)
• Azure로 테스트에 집중
• 무중단 배포 와 다양한 DevOps 배포 전략
1. 개발 환경 소개
7. JBoss EAP & Wildfly
대표적인 오픈소스 WAS
✓ Red Hat 사의 대표 오픈소스 Web Application Server
✓ JAVA 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. 개발 환경 소개
8. 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. 개발 환경 소개
9. Git & Github
오픈소스 대표 버전관리시스템 소개
✓ Git : 리누스 토르발스가 개발한 분산형 버전관리시스템 (또는 형상관리시스템)
✓ Git : 빠른 속도, 분산형 저장소 지원, 가벼운 브랜치, 병합 구조
✓ Git : 로컬 레포지토리 (저장소) 지원으로 오프라인에서 개발 가능, 이후 원격 저장소에 업데이트
✓ Github : 대표적인 무료 Git 저장소, https/ssh 지원, Github Action (CI/CD 워크플로우 자동화 기능) 지원
✓ Github : 2018.6.4 MS에서 Github를 인수
1. 개발 환경 소개
11. 개발 프로세스
Github 를 사용한 프로세스 요약
✓ GitHub Repository 를 이용하여 소스 다운로드(Clone)
✓ 다운로드한 코드를 로컬 JBoss에서 테스트
✓ 소스 버전을 변경하고 Git 로컬 레포지토리에 저장(Commit)
✓ Git 로컬 레포지토리에 있는 코드를 Github에 저장(Push)
✓ Azure App Service 에서 JBoss 리소스 생성
✓ Azure App Service가 Github Action 의 workflows 스크립트를 수행(mvn install 생성된 war 파일을 가져와서 JBoss에
deploy)
2. 개발 & 형상관리
12. 3.
⁻ Azure Database 생성
⁻ Azure App Service 설정
⁻ Azure JBoss 코드 Database Source 설정
인프라 설정
13. Database 설정
WAS에 필요한 MySQL 생성
✓ Portal > 리소스 만들기 > Azure Database for MySQL > 단일 서버 > 기본 정보 입력 > 만들기
• 연결 보안 > 퍼블릭 네트워크 액세스 거부 (아니요) > Azure 서비스 방문 허용 (예)
・ 방화벽 규칙에 현재 사용 IP 등록
・ SSL 연결 적용 (사용 안함)
• 연결 문자열에서 JBoss에서 사용할 JDBC 문자열을 확인
3. 인프라 설정
14. Azure App Service 설정
App Service 만들기
✓ 홈 > App Services > App Service 만들기
✓ 구독 리소스 그룹 > 이름 (하위도메인 네임) > 게시 (코드) > 런타임 스택 (java 8) > Java 웹서버 스택 (JBoss EAP 7)
✓ 운영 체제 (Linux) > 지역 (Korea Central) > 검토 + 만들기 > 만들기
✓ 기본 웹앱 배포 1분 정도 소요
✓ 리소스로 이동 -> 오른쪽 상단 URL 확인
3. 인프라 설정
15. JBoss & Github 설정
초기 상태인 App Service에 Github 연결
✓ 좌측 메뉴 중간 > 배포 센터
✓ 소스 : 지속적인 배포 ( CI/CD ) -> GitHub 선택
✓ 다음으로 로그인 : Github 유저 정보 입력
✓ 조직 : 유저명, 리포지토리 : 개발 소스 저장소 선택, 분기 : 마스터
✓ 최상단 메뉴 저장 클릭 -> 배포 작업 바로 수행 -> 좌측 메뉴 상단 개요 클릭
3. 인프라 설정
16. JBoss Datasource 설정
Azure App Service JBoss에서 Datasource 생성 방법을 기술
✓ FTP 또는 사용가능한 방법으로 /home/site/deployments/tools/ 아래에
✓ start_script.sh, jboss module(mysql-module.xml, mysql-driver.jar), jboss.cli 업로드
✓ Portal > App Service > 생성 리소스명 > 구성 > 일반 설정 > 시작 명령
✓ /home/site/deployments/tools/startup_script.sh 등록 > 저장
3. 인프라 설정
20. Rolling 배포
구 버전에서 새 버전을 한대씩 교체하는 배포 전략
5. DevOps 배포 전략
https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3
21. Blue Green 배포
Blue(구) 버전에서 Green(새) 버전으로 일제히 전환하는 배포 전략
5. DevOps 배포 전략
https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3
22. Canary 배포
구 버전의 서버와 새 버전의 서버들을 구성하고 일부 트래픽을 새 버전으로 분산하여 오류 여부를 판단
5. DevOps 배포 전략
https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3