애저 펑션으로 배포하는 실습을 하기에 앞서 Bicep으로 리소스를 생성하는 실습을 진행.
-Bicep의 유래
진행할 프로그램에 잘 맞는 resource, virtual machine을 선택하여 cloud resource를 잘 활용하기 위해서는 web server를 돌리기위해 가장 최적으로 필요한 만큼만 resource를 사용하는 것이 적합하다. 이러한 작업을 위해 resource를 잘 install해야하는데, 그러기 위해 리소스 정의 문서가 나왔다.
microsoft에서는 애저 리소스 매니지먼트(ARM:Azure Resource Management)라고 한다. 초창기에는 그냥 만들다가 2014년도 이후로 ARM이라는 컨셉이 나오면서 ARM 템플릿을 생성하여 이러한 방식으로 resource를 설계했다. 그러나 ARM 템플릿 컨셉이 편했지만 사용하기가 힘들어 굉장히 복잡한 단점이 있었다.
이러한 단점을 보완하기 위해 나온 것이 Bicep
bicep 생성을 시작하기에 앞서 해당 프로젝트를 진행함에 있어 자주 쓰이는 중요한 디자인 패턴들을 소개한다.
-bff(backend for frontend) 패턴
이 프로젝트에서는 BFF를 적극적으로 사용하고 있다. front supporter라고 일컫는 사람도 있으며, 특정한 하나를 위한 프록시 서버를 하나 만드는 개념이다. api gateway라는 것이 있는데 이것은 이미 있는 것들을 조합하는 형태에 불과하다. 이 안에서 여러 api를 모아두고 bff 역시 gateway 안에서 세팅할 수 있다. 그러므로 굳이 새로 bff api서버를 만들 필요가 없다. 우리 프로젝트는 api management 안에서 bff 구성을 하여 사용할 예정이다.
-빌더 패턴
이 프로젝트에서 굉장히 많이 사용되는 패턴이다. 특히 객체 지향적인 설계를 할 때 굉장히 편리해지는 장점을 가지고 있다. (빌더 패턴을 적용하여 fluent api를 작성한다.(this is 내부DSL)
-fluent api, dsl(domain specific language)
이 전 글에서도 작성한 용어이며, fluent api는 메소드체이닝에 굉장히 의존하지만, 굉장히 위험할 수도 있다. 그러한 이유는 점(.)으로 모두 표현하기 때문에 만약 첫 번째 함수에서 문제가 생기면 그 다음 함수가 실행이 되지 않기 때문에 디버깅이 매우 힘들다.
그래서 일반적으로 메소드체이닝을 가급적 사용하지 않지만, fluent api를 사용하면 가능하다. 왜냐하면 리턴 값이 항상 존재하기 때문이다. 그러므로 자주 사용된다.
bicep에서 우리가 진행하는 것은 외부DSL이라고 볼 수 있다.
Bicep이란?
Bicep은 애저 리소스를 배포하는데 사용되는 RM(Resource Manager)템플릿 언어로 DSL 즉, 도메인을 위해 설계되었다.
Bicep을 생성하기 위해서는 사전작업으로 Azure CLI와 애저 계정 구독을 해야한다.(애저 CLI로 배포를 해야하기 때문)
다음은 Bicep 작동방식으로, Bicep 템플릿을 JSON템플릿으로 변환한다. 이 프로세스를 트랜스파일(transpilation)이라고 하며, ARM 템플릿을 중간 언어로 처리하는 프로세스다. 수동으로도 가능하지만, 자동으로 수행이된다. Bicep이 읽기 쉽고, 사용하기 편리한 이유는 예시 코드를 보면 직관적으로 알 수 있다.
그렇다고 Bicep이 모든 곳에서 적합하지는 않다. 특히 다른 클라우드 공급자용 언어로는 작동하지 않으며 Azure를 클라우드 플랫폼으로 사용하는 경우 이점이 많다. 기존 도구 집합. 즉, 자신의 조직에서 이미 사용하는 다른 도구 집합이 있거나, 다중 클라우드 공급자를 사용하여 인프라를 호스트하는 경우에는 부적합할 수 있다.
-bicep 생성 과정
az --version #애저 버젼 확인
az bicep install #애저 바이셉 설치
az bicep version #애저 바이셉 버전 확인
az login #애저 로그인(구독 해야 로그인됨)
az bicep --help #도움말 확인
az bicep build --help #도움말 확인
따로 생성한 폴더(infra)에서 main.bicep 파일 생성
cd infra 경로로 들어간 뒤 az bicep build -f main.bicep 실행
실행하면 main,json 파일이 생성됨. 이것이 ARM템플릿
Bicep을 생성할 때는 4가지가 가장 중요하다.
1.파라미터 2.배리어블 3.리소스 4.아웃풋
3가지는 없어도 된다더라도 3.리소스는 무조건 필수적이다. 참고로 bicep에서 작성할 때는 순서가 상관없으므로 자유도가 높다.
az deployment group create -n ocapractice -g rg-oca-krc -f .\main.bicep -p name=oca22(name은 중복되면 안됨) #해당 그룹 안에 바이셉을 실행
기본적으로 function app을 만들기 위해서는 ASP(App Service Plan)과 Storage account가 만들어져야 가능하다.
-Bicep을 생성하기 위한 목표 과제
* Bicep 코드 만들어서 공유하기
* Bicep 코드로 아래 리소스 만들기
* Azure API Management
* Azure Functions
* 필요한 디펜던시는 찾아서 직접 구현하기
리소스는 min 4, max 6개로 만들 것.
자료 참조 출처 : https://docs.microsoft.com/ko-kr/learn/browse/?terms=bicep&resource_type=learning%20path
-참고해두기
properties:{
reserved : true(리눅스) => false(윈도우)
}
'오픈소스 컨트리뷰션 아카데미' 카테고리의 다른 글
[2022 OSSCA] Github Actions 활용하기 (1) | 2022.07.27 |
---|---|
[2022 OSSCA] Azure Function 앱에 대한 5개의 dependency 생성 (1) | 2022.07.21 |
[2022 OSSCA] Fluent API, DSL(도메인 특화 언어) (0) | 2022.07.18 |
[2022 OSSCA] azure function 생성 및 리팩토링 + openAPI document 생성 (0) | 2022.07.12 |
[2022 OSSCA] open source project 개발 환경 설정 (1) | 2022.07.11 |