기술지원 문의는 로그인 후에 가능합니다.

확인

Tech Blog

단군소프트에서 제공하는 소프트웨어 활용에 도움을 줄 수 있는 정보와 소프트웨어 새소식, 교육/세미나 정보를 제공해드립니다.

태그 모음

Tip&Tech

JetBrains Gateway 자세히 알아보기

22-01-18


안녕하세요, GitHub 한국 총판 단군소프트입니다.

오늘은 JetBrains Gateway에 대해 알아보려합니다.



최근 JetBrains는 JetBrains IDE에서 원격 개발을 지원 한다는 소식을 발표했습니다.

이는 곧 원격 서버에서 소스 코드, 툴체인 및 서비스로 실행되는 IntelliJ 기반 IDE를 호스트할 수 있다는 뜻!


친숙한 IntelliJ 플랫폼 기반의 로컬 씬 클라이언트는 편집, 빌드, 실행, 테스트, 디버그 등의 작업을 위해 풍부하고 완전한 기능을 갖춘 UI를 제공합니다.


깔끔하고 재현 가능한 개발 환경, 강력한 서버 머신, 어디서나 작업을 수행할 수 있는 기능 등, 물리적 서버나 가상 시스템에서 원격으로 코딩에 필요한 모든 것이 구현됩니다.


아직 공지 사항을 확인하지 못하셨다면 지금 바로 살펴보세요.>>


오늘은 새로운 JetBrains Gateway 앱에서 관리되는 원격 개발 워크플로를 자세히 설명드릴 예정입니다. 지금 바로 확인하세요!



JetBrains Gateway를 활용한 원격 개발

JetBrains 원격 개발은 SSH를 통해 서버에 연결됩니다


 IDE는 사용자 인터페이스를 표시하지 않고 프로젝트를 로드하는 백엔드 서비스로서 원격 시스템에 설치됩니다. 씬 클라이언트는 로컬에서 실행되고, IDE 백엔드에 연결되며, 완전하고 풍부한 UI를 제공하며 모든 처리는 원격으로 이루어집니다.



이 전체 프로세스는 원격 개발을 시작하는 데 필요한 모든 것을 제공하는 새롭고 컴팩트한 독립실행형 앱, JetBrains Gateway에서 관리됩니다. 독립실행형 앱이기에 작업 시작 시 로컬에 이 앱만 설치하면 되므로 성능이 낮은 노트북이나 전체 IDE 설치를 원치 않는 경우에 적합합니다.



그뿐 아니라 JetBrains Gateway는 여러 JetBrains IDE 번들 플러그인으로 제공됩니다.


이 초기 베타 릴리스에서는 IntelliJ IDEA Ultimate, PyCharm Professional, GoLand, PhpStorm 및 RubyMine의 시작 화면에서 바로 원격 개발 세션을 시작할 수 있습니다. 또한 독립실행형 Gateway 앱으로 CLion 및 WebStorm을 설치하고 관리할 수 있습니다. 곧 더 많은 IDE가 지원될 예정입니다.



Gateway는 원격 IDE 백엔드와 로컬 씬 클라이언트를 설치하고 SSH를 통해 둘 다 연결합니다.



이 앱은 우선 SSH 연결을 설정합니다. 그리고 호스트와 사용자 이름이 지정되고 키 또는 비밀번호가 제공되면 원격 서버에 연결합니다. IDE 백엔드의 설치 여부를 확인한 후, 설치되지 않은 경우 jetbrains.com에서 새로운 버전을 다운로드합니다.


IDE 백엔드를 시작하려면 Gateway가 프로젝트 디렉터리를 알아야 합니다.


이때 사용자는 원격 파일 시스템을 탐색하여 디렉터리를 선택하거나,

프로젝트가 아직 없는 경우 기본 제공 터미널을 사용하여 버전 관리 시스템에서 프로젝트를 복제할 수 있습니다.



IDE 버전과 프로젝트 디렉터리가 선택되면 Gateway가 IDE를 원격 서버에 다운로드하고 압축을 풀고 프로젝트가 로드된 상태로 실행합니다.


그런 다음 일치하는 버전의 JetBrains Client를 로컬로 다운로드, 캐시 처리 및 실행합니다.



JetBrains Client는 로컬에서 실행되며 IDE 백엔드용 사용자 인터페이스를 제공합니다. IntelliJ 플랫폼을 기반으로 하므로 모든 기능을 갖춘 IntelliJ 기반 IDE처럼 느껴집니다.


에디터, 코드 완성, 탐색, 검사 및 리팩터링 도구는 로컬 IDE와 동일하지만, 모든 파일이 원격으로 호스팅되고 모든 언어 처리가 원격 서버에서 수행됩니다. 몇 가지 새로운 기능이 추가되었지만  Code With Me에 사용되는 JetBrains Client와 동일합니다.


이제 기능이 풍부한 IDE 클라이언트에서 IDE 백엔드의 모든 대화상자와 도구 창이 로컬에 표시되므로 사용자는 원격 IDE 백엔드의 모든 기능에 액세스할 수 있습니다.


코드 작업을 마친 후에는 간단히 JetBrains Client를 닫으세요. IDE 백엔드는 계속 실행되며 JetBrains Gateway의 최근 연결 목록에서 링크를 클릭하기만 하면 백엔드에 다시 연결할 수 있습니다.




서버 구성

지금까지 원격 서버에 관해서는 별로 얘기하지 않았습니다. 현재 원격 개발에는 Linux 서버가 필요하지만 향후 업데이트될 예정입니다(Client는 Windows, macOS, Linux에서 실행됨). 이 제한사항 외에는, 물리 또는 가상 서버, 로컬에 호스팅된 서버, 데이터 센터 또는 클라우드 등 원하는 대로 사용할 수 있습니다.


가상머신 또는 컨테이너 사용 시 얻을 수 있는 이점 중 하나는 환경을 재현하고 팀에 공유할 수 있다는 것입니다. DevOps 팀에 도움이 되도록 JetBrains 원격 개발에는 프로젝트 로드, 종속 요소 다운로드, 색인 생성 및 컴파일을 통해 기존 환경을 ‘가동 준비’하는 데 사용할 수 있는 헬퍼 스크립트가 포함되어 있습니다.


결과 이미지가 준비되면 즉시 코딩을 시작할 수 있습니다.


스크립트를 직접 작성하는 시간을 아끼고 싶은 분들을 위해 소프트웨어 팀 및 프로젝트용 올인원 솔루션인 JetBrains Space에서는  클라우드 개발 환경을 도입했습니다.


로드, 컴파일, 색인 생성으로 프로젝트 가동 준비를 마친 후, 코딩을 시작할 준비가 된 환경을 스냅샷으로 저장하므로, Space에서 호스팅하는 모든 프로젝트는 개발 환경으로 쉽게 전환할 수 있습니다. 자세한 내용은 Space 공지글읽어보세요.



즐겨 사용하는 IntelliJ 기반 IDE의 2021.3 릴리스를 다운로드하거나 독립실행형  JetBrains Gateway 도구를 사용해 원격 개발을 시작하세요. 문서를 확인하고 후기를 들려주세요!




자주 묻는 질문

Q1. 원격 개발 지원은 현재 어떻게 진행되고 있나요?

스크린샷에서 ‘베타’ 라벨을 확인하셨을 겁니다. 원격 개발 지원은 IntelliJ 플랫폼 자체에 포함되어, 모든 IDE의 다양한 기능을 제공합니다. 주요 시나리오는 확실히 작동할 것이나, 여전히 사소한 문제가 발생할 수는 있습니다. 그렇지만 개발자 커뮤니티에 이 기능을 조기에 제공하려 합니다.


JetBrains Gateway는 여러 IDE에서 번들 플러그인으로 제공됩니다. 다른 IDE만큼 테스트가 진행되지 않은 일부 IDE(CLion 및 WebStorm)의 경우, Gateway가 번들로 제공되지 않지만 독립실행형 앱의 형태로 Gateway를 사용해볼 수 있습니다.


마지막으로 AppCode, DataGrip, DataSpell, Rider 및 Android Studio 등의 일부 IDE에서는 현재 원격 개발이 지원되지 않습니다. 최대한 빠른 시일 내 해당 IDE에서도 원격 개발을 구현하기 위해 최선을 다하고 있습니다.



Q2. 원격 개발 라이선스는 어떻게 제공되나요?​​

원격 개발은 기존의 유료 구독에 포함되며, Client에서 실행 중인 IDE 백엔드 인스턴스에 연결할 때 라이선스 확인이 이루어집니다. IDE 백엔드를 사용해 원격 서버 또는 서버 이미지를 생성하고 ‘가동 준비’하는 등의 자동화 작업에서는 라이선스가 필요하지 않습니다. 하지만 JetBrains Client와 IDE 백엔드를 상호작용하며 사용하려 할 때에는 라이선스가 필요합니다.



Q3. 원격 개발은 공동 개발에도 지원되나요?

아직은 아니지만 추가할 계획이 있습니다. 원격 개발은 Code With Me에 사용되는 기술과 동일한 기술을 기반으로 하며, JetBrains Client는 Code With Me 세션에 사용되는 것과 동일한 클라이언트입니다.

그러나 사용 시나리오는 매우 다릅니다. Code With Me는 다른 뷰를 사용하는 동시 사용자 여러 명에게 일부 도구 창과 대화상자를 표시하는 데 사용되지만, 원격 개발은 사용자 한 명에게 모든 도구 창과 대화상자를 표시해야 합니다. 저희 팀은 초기 릴리스 개발 시 이 시나리오를 중점적으로 고려했습니다.



Q4. 원격 개발은 완전한 JetBrains IDE 환경을제공하나요?

예! 씬 클라이언트 및 헤드리스 IDE 백엔드로 작업하는 중이라도, 모든 주요 기능, 도구 창 및 대화상자를 이용할 수 있습니다. 다양한 구문 강조 표시, 탐색, 코드 완성, 검사, Alt+Enter 액션, 빠른 수정, 컨텍스트 액션, 리팩터링, 실행 구성, 실행 및 디버그 지원, Gradle 및 Maven과 같은 테스트 및 도구 창, 플러그인 등 수많은 기능이 지원됩니다.

원격 개발은 포트 포워딩도 지원하므로, 로컬 브라우저를 통해 원격으로 실행 중인 프로젝트를 확인할 수 있습니다.



Q5. 웹이나 iPad와 같은 다른 UI를 사용할 수 있나요?

원격 개발은 IntelliJ 플랫폼을 사용해 JetBrains Client와 함께 작동하도록 특별히 설계되었으므로, (로컬에 설치된 IDE에서 자동으로 가져오는) 테마와 플러그인을 통해 사용자 지정 및 맞춤 설정 등, JetBrains IDE의 모든 인기 기능을 갖춘 친숙한 클라이언트 애플리케이션을 제공합니다. Rider와 Code With Me의 접근방식을 다시 사용하여 가벼운 ‘뷰 모델’을 기반으로 프로토콜이 구현되었고, 결과적으로 반응성이 뛰어난 사용자 환경이 완성되었습니다. 따라서 웹 프런트엔드를 지원할 계획은 없습니다.

Projector를 사용하면 웹 브라우저를 통해 JetBrains IDE에 액세스할 수 있습니다. Projector는 원격 개발 프로토콜보다 낮은 수준에서 작동하므로 UI 지연 시간이 더 길고 훨씬 더 많은 네트워크 대역폭이 사용됩니다. Projector의 또 다른 제한사항은 로컬에 설치된 IDE의 설정 및 플러그인 가져오기를 지원하지 않는다는 것입니다.



Q6. 플러그인이 지원되나요?

IntelliJ 플랫폼은 원격 개발에서도 사용 가능한  우수한 플러그인 에코시스템을 갖추고 있습니다. 새로운 언어에 대한 지원을 추가하거나 새로운 검사 및 강조 표시를 추가하는 등 IDE 기능을 확장하도록 플러그인이 설계된 경우, 해당 플러그인을 IDE 백엔드에 설치 가능하며 이러한 기능이 JetBrains Client에서 자동으로 지원됩니다. 모든 신규 검사, Alt+Enter 액션 등은 로컬 IDE에서 실행할 때의 동작대로 Client를 통해 작동합니다. 플러그인 설치는 IDE 백엔드를 스크립트 처리하여 자동화할 수도 있습니다.

테마처럼 IDE의 UI를 변경하는 플러그인은 IDE 백엔드가 아닌 JetBrains Client에 설치 가능합니다. IdeaVim 등의 에디터 플러그인도 Client에서 작동합니다.



Q7. 어떤 운영 체제가 지원되나요?

현재 JetBrains 원격 개발에는 Linux 서버가 필요하지만 Client는 Windows, macOS 및 Linux에서 작동합니다. 향후 Windows와 macOS 서버에 대한 지원도 추가될 예정입니다.



Q8. 클라우드에서 원격 서버를 호스팅할 수 있나요?

물론입니다! 원격 서버는 사무실에 놓인 물리적 서버여도 되고 데스크톱 또는 클라우드에 있는 가상머신이어도 됩니다. 원격 서버는 Docker 이미지로 생성할 수 있으며 IDE 백엔드에는 종속 요소 다운로드, 컴파일, 색인 완성 대기용으로 사용할 수 있는 스크립트가 포함됩니다.



Q9. JetBrains 원격 개발용으로 타사에서 제공하는 오케스트레이션이 있나요?

현재 Dockerfile을 사용해 저장소를 즉시 사용 가능한 가상머신으로 변환하여 원격 서버 오케스트레이션을 제공하는 유일한 도구는 JetBrains Space입니다. 통합 기능과 관련해서는 다른 제공업체와 논의 중이며 향후 더 많은 통합 기능을 알려 드릴 예정입니다.



오늘 JetBrains Gateway 앱에서 관리되는 원격 개발 워크플로 글이 도움 되셨나요??

추가로 문의사항 있으시면 아래 댓글 혹은 JetBrains코리아(단군소프트)로 언제든 연락주세요!


긴 글 읽어주셔서 감사합니다.



출처 : https://blog.jetbrains.com/ko/blog/2022/01/10/dive-into-jetbrains-gateway/


태그