주메뉴 바로가기 본문 바로가기

알림

콘솔 이동 시 로그인이 필요합니다.

로그인하시겠습니까?

아니요

닫기

주문 불가 알림

주문권한이 없습니다.

콘솔에 접근할 수 없는 계정입니다.

확인

닫기

알림

신용카드 등록이 필요합니다.

신용카드 등록 페이지로 이동하시겠습니까?

아니요

닫기
C&C Tech
img

AWS iOS 개발 환경 구성

img Sangho Lee(이상호)
| 2024.08.21
  • iOS
  • Development
  • Mac
  • AWS

AWS에서 MacOS EC2로 iOS 개발환경 구성

AWS에서 제공하는 macOS EC2 인스턴스는 로컬 Mac 장비 없이도 안정적이고 유연한 iOS 개발 환경을 제공합니다.
iOS 앱을 개발하거나 테스트하기 위해 반드시 물리적인 Mac이 필요하다는 기존의 제약을 넘어서, AWS를 활용하면 클라우드 상에서 손쉽게 macOS 환경을 구성할 수 있습니다.

이 블로그에서는 AWS macOS EC2를 활용해 iOS 개발 환경(IDE 동작 확인)을 설정하는 방법을 단계별로 알아보고, macOS EC2를 통해 클라우드 기반의 iOS 개발을 시작하려는 분들께 실질적인 가이드를 제공하는 것이 이 글의 목표입니다.

AWS mac OS EC2?

AWS macOS EC2는 애플의 macOS 운영 체제를 기반으로 한 클라우드 인스턴스 서비스로, iOS, macOS, tvOS, watchOS 앱을 개발 및 테스트할 수 있는 환경을 제공합니다.

AWS macOS EC2를 사용할 경우 아래와 같은 장점이 있습니다.

  • 시간과 리소스 절약
    온프레미스 macOS 환경 구축 및 유지 관리를 대신하여 AWS가 인프라를 관리하므로, 개발자는 창의적이고 유용한 앱 개발에 집중할 수 있습니다. EC2 Mac 인스턴스를 통해 온디맨드로 macOS 환경을 프로비저닝하고, 분산 테스트 및 빠른 앱 구축을 지원합니다.

  • AWS 서비스 통합
    EC2 Mac 인스턴스는 Amazon VPC, EBS, ELB, FSx, SSM Agent 등 다양한 AWS 서비스를 지원합니다. 이를 통해 개발자는 네트워크 보안, 확장 가능한 스토리지, 자동화된 환경 관리 등 클라우드 기반의 강력한 도구를 활용하여 효율적으로 협업하고 앱을 개발 및 개선할 수 있습니다.

  • Apple 실리콘 지원
    EC2 Mac 인스턴스는 M1, M1 Ultra, M2, M2 Pro 기반의 Apple 실리콘 환경을 지원하여, macOS 애플리케이션의 리아키텍트, 구축, 테스트, 배포를 간소화합니다. 베어 메탈 성능과 분산 테스트로 빠른 애플리케이션 개발이 가능하며, 물리적 인프라 관리 부담이 없습니다.

  • 비용 효율성
    종량제 요금제로 필요한 용량만 프로비저닝하고 사용한 만큼만 비용을 지불할 수 있습니다. 빌드, 테스트, 배포 과정에서 유연하게 용량을 조정할 수 있어 불필요한 비용을 절감합니다.


현재는 아래와 같은 인스턴스 타입을 제공합니다.

  • Mac1(x86 기반)
  • M1 Mac
  • M1 Ultra Mac
  • M2 Mac
  • M2 Pro Mac
각각의 상세한 스펙은 여기를 참고할 수 있습니다.

mac OS EC2 구성하기

아래와 같은 아키텍처 구성을 토대로 구성합니다.
  • 사용자(개발자)는 Bastion을 통해서만 macOS EC2(개발환경)에 접근하도록 구성
  • macOS EC2는 직접적인 인터넷 접근이 아닌 NAT를 통해 접근하도록 구성

1. VPC 구성

아키텍처에 설계된것 과 같이 VPC는 최종적으로 아래와 같은 리소스맵으로 확인 가능합니다.

mac OS 인스턴스 선택시 특정 가용영역에 생성이 불가능한 경우가 간간히 발생하기 때문에
VPC 생성시에 AZ 가용영역을 반드시 2개 이상 설정할 것을 권장합니다.
 


 

2. 전용 호스트 할당

mac OS EC2는 전용 호스트에서 구성가능하기 때문에 EC2를 생성하기 전에 전용 호스트를 먼저 할당(구성)합니다.
  • 이 글에서는 추후 EC2 생성시에 mac2-m2로 할 것이므로, 전용 호스트 인스턴스 패밀리도 동일하게 선택합니다.
  • 인스턴스 유형도 동일하게 "mac2-m2.metal"로 선택합니다.


위와 같이 설정 후 생성을 하면, 아래와 같이 해당 인스턴스 타입은 가용성 영역과 관련하여 오류가 발생합니다.

그렇기 때문에 최초 VPC 생성시에 해당 부분을 고려하여 2개 이상을 사전에 구성하는 것이 권장이며, 여기서는 1b로 수정하여 생성하였습니다.

3. mac OS EC2 구성

EC2 생성시에는 아래 몇가지 특이사항만 추가적으로 설정하여 생성이 가능합니다.
  • Mac OS는 x86 기반 / Arm 기반에 따라 사용가능한 인스턴스 타입이 다르므로 잘 선택해야하며, 여기서는 m2-mac을 하기 위해 아키텍처를 64비트(Mac-Arm)을 선택하였습니다.
  • 스토리지는 최소 100GiB를 이상하지 않을 경우 생성이 되지 않습니다.
  • 앞서 만든 전용호스트를 설정해줘야 합니다.
  • Mac EC2는 Private구성으로 Public 접근(직접)은 통제하고자 하였으므로, 아래와 같이 "퍼블릭 IP 자동 할당"은 비활성화 하며, Private Subnet에 배포합니다.

4. Bastion EC2 구성

Bastion은 Windows로 구성하였으며, 여기서는 아래와 같은 스펙으로 구성하였습니다.
  • Windows 2019 Base
  • t2.2xlarge
  • Mac OS EC2와는 다르게 Public IP 자동 할당 활성화하고, Public Subnet에 배포합니다.

5. Mac OS EC2 GUI로 접속 설정

원격 접속 툴 Tiger VNC 설치

  • https://sourceforge.net/projects/tigervnc/files/latest/download


Mac OS EC2 Security Group 설정
  • Bastion에서 Mac OS EC2로 VNC로 접근할 예정이므로 5900 Port를 인바운드에서 오픈합니다.

GUI 접속을 위한 Mac OS 설정(SSH)

  • Windows(Bastion)에서 Mac OS EC2로 SSH로 접근합니다.(여기서는 Git Bash를 활용하였습니다.)
  • 명령어는
    • ssh -i [키 페어] ec2-user@[Mac OS EC2의 Private IP]
  • 접속 Password 설정과 GUI 관련 설정을 아래와 같이 실행합니다.
sudo passwd ec2-user

#패스워드는 8자리로 설정을 권합니다.(특정 VNC 툴에서는 8자리까지만 인식되는 경우가 있음)

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
-activate -configure -access -on \
-configure -allowAccessFor -specifiedUsers \
-configure -users ec2-user \
-configure -restart -agent -privs -all

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
 -configure -access -on -privs -all -users ec2-user

접속 및 Xcode를 통한 실행 확인


위에서 설치한 Tiger VNC를 통해 접속

  • Mac OS EC2의 Private IP
  • Username : ec2-user
  • Password : 위에 설정에서 변경한 것으로 입력

접속 확인

  • 아래와 같이 Windows Bastion에서 Tiger VNC를 통해 Mac OS EC2로의 정상 접근을 확인합니다.
  • MacOS EC2에는 Public IP가 없지만, NAT 설정을 통해 인터넷이 가능하므로 App Store를 통해 Xcode 설치가 가능합니다.
  • 설치된 Xcode로 기본 Hello App을 실행하면 아래와 같이 정상적으로 동작하는 것을 확인할 수 있습니다.

결론

  • Cloud 특성을 활용해서 실제 Mac 기기를 사용할 때 보다 Private한 설정을 쉽게 할 수 있음
  • EC2에 생성한 것이기 때문에 다른 AWS 자원과의 통합이 원활함
  • 실제로 사용 가능한 수준에 대한 여부는 개발자의 요구사항에 따라 달라질 수 도 있음
img
Sangho Lee(이상호) | Cloud Architect Team

Cloud Architect로 컨설팅, 설계, 구축을 지원하고 있습니다.