노력과 삽질 퇴적물

AWS경험으로 MS Azure(애저) 적응 연습 본문

📂게임개발 note/클라우드 & 서버

AWS경험으로 MS Azure(애저) 적응 연습

MTG 2025. 2. 4. 15:45

[이미지 출처: techthatworks.net]
무료 계정  

 1) 애저 포탈
 2) Cost Management
서버 배포  

 1) Linux 가상 머신 만들기
 2) 터미널 접속
기타  

 1) 개인적인 분석
 2) PostgreSQL
 3) 코드를 통한 Blob 업로드
 4) FaaS, 함수앱

* 시작하며.
① AWS 실무경험은 그리 짧지 않지만, 클라우드 환경 2위가 MS라길래 서브 스킬 개발차원에서 포스트 남깁니다.
💬 이 부분은 보조 설명.
//이 부분은 개인 의견 중심입니다.

② 튜토리얼에는 있는 메뉴 위치가 내 시점에서는 없는 경우가 AWS, 페이스북 개발자 페이지를 이어 MS의 애저에도 있군요.💣
 가급적 최신판 레이아웃 캡쳐 넣긴 하지만, 몇 달 후 세부적으로 또 바뀔거 같습니다. (운 나쁘면 잠수함 패치로 어제하고는 다른 레이아웃과 메뉴)

③ 원래는 MS쪽 자료 페이지 링크만 정리 하려했으나... 그 MS조차 개발문서 페이지가 증발...💣
 그 때는 ASP .NET쪽 관련 자료긴 했는데 버전상 레거시 버전이 되어서인지 자료 개편등으로 어디로 옮긴건지 찾기도 번거로워 결국 자체 문서화를 겸한 블로그 포스팅.



1. 무료계정
1) 애저 포탈 📂
 학생 라이센스를 쓰실분은 Azure로 검색해서 그냥 들어가면 안 되고, 🔗Microsoft Azure Portal(애저 포탈)로 가셔야 합니다. 혹시 모르니 메모.




2) Cost Management 📂
 Azure for Students라이센스는 신용카드 입력이 없다보니 크레딧 소진이후 비용청구가 없지만, $200짜리 1달 체험판 라이센스에서는 주의가 필요합니다.

2-1) 예산
 튜토리얼 영상하고는 메뉴 배치가 달라서 2024-08-19기준 캡쳐넣었습니다. AWS에서는 크레딧 소진 추세상 약 1달 이내로 되면 이메일로 알려주는것이 기본 설정이였지만, 제 라이센스 특성상 애저에서의 기본은 모르겠어도 예산 소진 알림 이메일을 몇 단계로 여러개 만들면 관리상 쓰임새가 많죠. 수동으로 모니터링 안 해도 된다거나.

2. 서버 배포
1) Linux 가상 머신 만들기 📂


1-1) 기본사항
💬 2024-08기준으로 우분투는 24.x가 최신이지만,
 리눅스는... 일정 버전마다 기본 패키지/설치경로/명령어 방식도 달라지곤 하니 저는 튜토리얼에 있는 버전으로. 가상머신 2대를 써야 하다보니 실제로 사용한 가상머신 이미지들도 캡쳐.
/* Rocky는 이번에 처음 써보는거긴 한데,
 LVM이라는 옵션을 찾아보니 AWS에서는 서버 디스크 용량을 업그레이드시 디스크 마운트를 통한 용량 확장을 하던것과 세부적으로 무슨 차이인지는... 써봐야 알듯. */
 그리고 centOS가 기본적으로 LVM이라고 하고 Rocky는 centOS의 후계이니 with LVM.


 가장 가상머신 스펙중 B리시즈의 B1ls가 최저요금으로 나옵니다. 옵션별로 필터를 해서 원하는 사양으로 찾는 부분도 애저가 좋군요. 

터미널 접속용이랑 웹브라우저 연결을 위해 2개만 포트를 열었습니다.


1-2) 디스크
 우분투는 30을 주고, Rocky는 10을 주는군요. AWS에서는 아마존 리눅스건 우분투건 30을 주던데 그 환경에서 Rocky는 안 써본터라 나머지는 모르겠습니다.
 그리고 디스크 유형에 HDD도 선택이 가능하군요. 이런 세부적인 차이들을 확인치 않고 넘기면 나중에 이슈 처리등에서 퇴근 시간이 늘어지겠구나의 감상 한 줄정도?


1-3) 네트워킹

 인바운드 포트에 지금은 80번만 허용했지만, 나중에 네트워킹에서도 설정은 가능하니 지금은 그냥 80번 포트만.
 가상머신 생성하면서 SSH용 보안키 파일(*.pem) 다운로드.


1-4) 기타
 테스트용에서는 나머지 항목들은 거의 안 해도 되긴하는데,
 '태그'쪽이 AWS보다는 편의성이랄지 태그를 통해서 연결된 리소스를 찾기 편해보입니다. 사실 (AWS)cloudWatch통해 서버 이미지 백업/오래된 이미지 삭제를 세팅할 때 정도긴 했지만서도.



2) 터미널 접속 📂
 네트워크 보안 그룹(NSG)을 확인해봅니다.
소스IP에서 현재 접속중인 IP로 선택지를 주는 편의성까지 좀 더 마음에 드는군요.
1) 개인적인 분석 📂
💬 AWS는 EC2메인 상단에 가상머신들이 다 모여있고, 생성된 리소스들은 EC2메인의 각 카테고리마다 모여있던거하고 달리 가상머신 중심으로 가상머신 하위메뉴로 배치.
💬 여러 서비스와 환경별 서버를 세팅/관리하게 되면 이쪽이 리소스 관리에 좀 더 용이할텐데, 뭐든 상황이나 목적에 따라 장단점이 있으니 CSP별 서비스의 특징 파악이 도메인 지식으로 좋죠.

로드밸런서 in 애저 => 부하 분산/부하 분산 장치
상태 프로브 => (프로토콜을 http/https로 두고)health check
가상 머신 확장 집합(VMSS) => 오토 스케일링

 애저 머신러닝 스튜디오중 '디자이너' 메뉴는 오페라 브라우저로 사용 불가. 가급적 크롬이 나을겁니다. (2024-11 기준.)



2) PostgreSQL 📂
Azure Database for PostgreSQL과 Azure Database for PostgreSQL 유연한 서버 차이?
→ 'Azure Database for PostgreSQL'쪽이 구형 버전으로 윈도우만 지원이라 함.





3) 코드를 통한 Blob 업로드 📂
 AWS로 업무하면서 빈번히 쓰이는 CLI를 bat으로 묶어서 기획자가 데이터 테이블을 필요에 따라 배포 및 적용이 가능하게 처리를 했는데, MS 애저쪽 튜토리얼은 파이썬으로 하는것이 먼저 나오더군요.
 그런데 [🔗정재화 교수님의 예제코드]로 이미지 파일을 올려서 URL을 통한 퍼블릭 공개를 확인해보니 브라우저에서 이미지 파일이 디스플레이되지 않고 그대로 다운로드... 설마하고 코드를 통해 업로드된 파일의 세부사항을 보니 역시나.
💬 AWS sdk에도 겪은거지만, blob업로드시 content type에 application/octet-stream이 기본값이다보니 원하는대로 써먹기 위해 upload_blob함수의 content_type필드에 원하는 사양 입력합니다.(예: image/jpeg)
... ... ...
  file_name = "uploadTest.jpg" 
  container_client = blob_service_client.get_container_client(container=container_name)

  print("\nUploading to Azure Storage as blob:\n\t" + file_name)
  opts = "image/jpeg"
  with open(file=os.path.join('', file_name), mode="rb") as data:
    blob_client = container_client.upload_blob(name=file_name, data=data, content_type=opts, overwrite=True)
... ... ...



4) FaaS, 함수앱 📂
기타. 참조자료
1) 튜터링 사이트 
사이트명
learn.microsoft(한글) AWS 전문가를 위한 Azure
AWS와 Azure 서비스 비교 (갱신: 2024-08-14)
Azure Functions 호스팅 옵션 (접속: 2025-02-04)
Azure Storage 설명서
Python을 사용하여 Blob 속성 및 메타데이터 관리 (갱신: 2024-08-23)



2) 블로그 📂
1) github.io
jaehwachung/cloud_computing, "upload_blob.py", (접속: 2025-02-04) https://github.com/jaehwachung/cloud_computing/blob/main/blob_storage/upload_blob.py.
 
기타. 변경 내력
일자
변경 내력
2025-02-04 초안 및 일반 공개. [🔗blogger] [🔗티스토리].
포스팅 신규 양식 적용(ver.202408)