조직 내에서 JMP를 확장하기 시작할 때 직면하는 가장 큰 과제 중 하나는 사람들이 JSL 사용법을 배우기 시작하고, 조직 내에서 JSL 코드가 급증하는 것을 목격한다는 것입니다. JMP가 회사 내에서 대규모로 도입됨에 따라 발생하는 가장 큰 과제 중 하나는 사용자가 생성한 모든 코드를 어떻게 대규모로 관리할 것인가, 그리고 이 모든 것을 어떻게 제어할 것인가 하는 문제입니다.
수년에 걸쳐 이를 위한 다양한 방법들이 제안되어 왔습니다. 컴퓨터 과학 및 소프트웨어 개발 분야에서 나온 버전 관리 시스템도 있고, 공유 드라이브를 어딘가에 두는 것도 좋은 방법입니다. 하지만 두 방법 모두 장단점이 있습니다.
터널 끝의 희망을 조금 보여드리자면, 이 문제에 아주 적합한 중간 지점이 있습니다. 소프트웨어 관리 부분을 담당할 본격적인 소프트웨어 개발 회사를 사내에 설립하는 데 모든 자원을 쏟고 싶지는 않습니다. 누군가의 서버에 있는 공유 드라이브처럼 마치 서부 개척 시대처럼 운영되고 싶지는 않거든요.
하지만 이 두 가지 극단적인 방식 모두 장단점이 있습니다. Git이나 버전 관리 시스템에 대해 이야기할 때, 사람들이 가장 잘 아는 것은 대개 GitHub입니다. 코드 베이스 관리? GitHub은 바로 그 일을 정말 잘합니다. 정말 좋은 도구죠.
업데이트를 쉽게 배포한다고요? 그게 이 플러그인의 전문 분야가 아닙니다. 원래 용도도 아니고요. 전문적인 소프트웨어 개발 워크플로우를 위해 설계되었는데, 여기서 이야기하는 건 그게 아닙니다. 이 플러그인은 그 기능을 특별히 잘 수행하지 못합니다.
물론, 접근 권한과 버전 권한을 제어하는 것은 매우 효과적입니다. 버전 관리를 유지하고, 시간 경과에 따른 변경 사항을 추적하는 것, 이 모든 것이 바로 버전 관리 시스템의 목적입니다. 이러한 점 때문에 초보자에게는 적합하지 않습니다. 전문가를 위해 설계된 시스템입니다.
실제로 이런 방식이 활용되는 사례를 본 적이 있지만, 대개는 회사 내에 전담 소프트웨어 개발 그룹을 구성할 전담 인력, 자원, 시간을 보유한 조직에서 그렇습니다. 특정 상황에서는 효과적일 수도 있고, 다른 이유로 이미 구축해 놓은 조직일 수도 있습니다.
반대로, JSL 파일과 공유 폴더, 즉 특정 서버의 공유 디렉터리만 사용하는 아이디어도 있습니다. 버전 관리 시스템 문제와 거의 똑같습니다. 코드 베이스 관리도 별로입니다. 일부 클라우드 시스템에서는 개선되고 있지만, 여전히 만족스럽지 않습니다.
업데이트를 쉽게 배포할 수 있나요? 물론입니다. 최신 업데이트를 클릭하기만 하면 됩니다. 이메일을 보내거나 다른 방법을 사용하거나, 애드인을 사용할 수도 있습니다. 특정 워크플로우를 돕기 위해 오랫동안 제안되어 온 코드를 애드인에 추가할 수도 있습니다. 분명 가능성은 있지만, 쉬운 일은 아닙니다. 이 점에서 버전 관리 시스템보다 낫습니다.
접근 제어? 솔직히 말해서 별로 좋지는 않아요. 초보자 친화적이라고요? 네. 나쁘지는 않지만, 최상급도 아닙니다. 알고 보니 이 문제에는 중간 지점이 있더군요. 저와 동료, 그리고 공동 저자인 저는 결국 두 가지 다른 개발 활동에서 이 문제에 접근하게 되었습니다. 둘 다 거의 같은 해결책을 도출해냈죠. 이 아이디어의 중간 지점에서 어떻게 만났는지 보는 것도 흥미로웠습니다.
믿거나 말거나, 그 아이디어는 바로 OneDrive였습니다. 누구나 가지고 있죠. 기업용 시스템이죠. 물론 모두가 그런 건 아니지만, 상당수의 조직이 OneDrive나 그에 준하는 서비스를 사용하고 있다고 가정해 보겠습니다. 저는 OneDrive를 사용하고 있기 때문에 이 세션에서는 OneDrive를 사용하겠지만, 다른 대체 서비스도 있습니다.
하지만 이 방법의 장점은 정말 놀랍습니다. 코드 베이스를 관리하는 것은 JSL과 같은 맥락이지만, 버전 관리가 더 뛰어나고 편집 제어도 더 강력하며, 히스토리를 추적하고 이전 버전의 코드로 롤백할 수 있습니다. 문제가 발생하거나 코드에 손상이 생기거나 하는 경우, 롤백이 가능합니다. 바로 이러한 기능들이 바로 우리가 여기서 이야기하는 엔터프라이즈 시스템을 통해 제공됩니다.
업데이트를 쉽게 배포할 수 있습니다. 이 솔루션의 핵심은 바로 여기에 있습니다. 회사 전체를 위한 자동화된 업데이트 전략을 거의 완벽하게 구축할 수 있습니다. 현실적으로는 손가락 하나 까딱하지 않고도 말이죠. 거의 코드가 필요 없습니다. 추가 기능에 몇 가지 코드를 추가해야 하지만, 그 외에는 모두 마우스 클릭만으로 가능합니다. 이 시스템을 사용하면 정말 쉽게 할 수 있습니다.
제어 및 편집 권한. 다시 말씀드리지만, 이 기능은 벽과 함께 제공됩니다. 사람들에게 보기, 편집, 다운로드, 편집 또는 다운로드 권한을 부여할 수 있습니다. 필요에 따라 모든 권한을 부여할 수 있으며, 필요에 따라 켜고 끌 수도 있습니다. 그룹별로 설정할 수 있으며, 정책 옵션 등이 있습니다.
실제로 매우 훌륭한 접근 권한 시스템을 갖추고 있으며, 초보자도 쉽게 사용할 수 있습니다. 앞서 말씀드렸듯이 추가 코딩이 거의 필요하지 않습니다. 이미 애드인을 개발하고 있다면 필요한 모든 것을 알고 있을 것입니다. 구현도 매우 쉽습니다.
비결은 무엇일까요? JMP가 애드인을 설치할 때, 애드인은 기본적으로 JSL 파일 몇 개와 JMP GUI에 애드인을 배치할 위치를 알려주는 특수 파일 몇 개, 그리고 애드인에 대한 메타데이터가 담긴 폴더일 뿐이라는 사실을 깨달으면 비결이 나옵니다. 하지만 대부분의 경우, JMP는 JSL 파일들을 모아서 자신이 찾을 수 있는 특정 위치에 배치하는 폴더일 뿐입니다.
흥미로운 점은 추가 기능의 중요한 파일은 JMP가 접근하는 어디에나 있을 수 있다는 것입니다. 꼭 해당 폴더에 있을 필요는 없습니다. 원하는 곳 어디든 넣을 수 있습니다. 하이드와 저는 중요한 파일을 OneDrive 폴더에 넣고, 추가 기능에서 해당 위치로 포인터를 이동해서 OneDrive 폴더에서 열도록 하는 것을 막는 것이 무엇인지 깨달았습니다.
결국 아무것도 없다는 걸 알게 됐어요. 아무것도 당신을 막을 수 없어요. 그렇게 하면 결국 이런 결과가 나오죠. 다음 슬라이드와 그 다음 슬라이드는 나중에 참고할 만한 내용이지만, 여기서 무슨 일이 벌어지고 있는지 간략하게 설명드리기 위해 아주 간략하게 살펴보겠습니다.
클라우드의 OneDrive에서 OneDrive 폴더는 추가 기능의 핵심이 될 것입니다. 사용자 인터페이스와 추가 기능 코드가 들어갈 겁니다. 하이드가 이런 식으로 접근했던 거죠. 제가 접근했던 방식은 리소스, 즉 하드 드라이브 공간을 많이 차지하는 방대한 자료 라이브러리를 저장하고, 실제로는 열 때만 불러오면 된다는 아이디어였습니다. 그렇지 않으면 하드 드라이브 공간을 차지하고 싶지 않거든요. 이런 자료들은 OneDrive 폴더에 존재할 수 있고, 바로 거기에 있습니다.
JMP 데스크톱에는 스무 줄 정도 되는 아주 작은 스크립트가 있습니다. 대부분은 사용자가 읽기 쉽게 만드는 작업입니다. 이 스크립트는 세 가지 작업을 합니다. 세 가지 구체적인 작업이죠. 첫째, 추가 기능 파일의 위치를 알고 있는지 확인합니다. 위치가 있나요? 없다면 "어디서 추가 기능을 찾아야 하나요?"라는 대화 상자를 표시해야 합니다. 그런 다음 추가 기능 패키지를 엽니다. 이것이 JMP가 하는 일의 전부입니다. 이 세 가지 작업입니다.
사용자 하드 드라이브에 있는 또 다른 기능은 OneDrive 위치의 미러입니다. 이 미러는 설정 방식에 따라 논리적 연결만 있거나, 파일 링크(별칭 포함)만 있거나, 동기화되는 실제 파일의 복사본을 가지고 있습니다. 두 방식 모두 장단점이 있으며, 둘 다 잘 작동합니다.
첫 번째 옵션은 논리적 연결만 있는 경우입니다. 장점은 파일 크기가 매우 작다는 것입니다. 하드 드라이브에 공간을 차지하지 않습니다. 링크만 있고, 런타임에 파일을 가져옵니다. 최신의 정확한 파일 정보를 얻을 수 있습니다. 단점은 인터넷에 연결되어 있지 않으면 작동하지 않는다는 것입니다. 비행기 등에 탑승 중이거나 Wi-Fi에 접속할 수 없는 경우 애드인이 전혀 로드되지 않을 수 있습니다.
또 다른 단점은 애드인의 크기에 따라 JMP에서 링크를 클릭했을 때 애드인이 열리는 데 약간의 지연이 발생할 수 있다는 것입니다. 둘 다 단점입니다. 단점이라고 하기는 어렵지만, 대용량 애드인의 경우 약간의 지연이 발생할 수 있다는 점을 알아두는 것이 좋습니다.
두 번째 옵션은 오늘 보여드릴 동기화된 폴더 옵션입니다. 이 옵션은 하드 드라이브 공간을 더 많이 차지하지만 오프라인 액세스가 가능하고 로딩 속도도 빠릅니다. 즉시 적용되지는 않지만 확실히 더 빠릅니다. 파일의 최신 버전을 가져와야 하는데 아직 동기화되지 않은 경우 약간의 지연이 발생할 수 있습니다. 하지만 이 옵션의 장점은 여기에서 파일이 변경되면 자동으로 로컬 폴더에 복사된다는 것입니다.
두 경우 모두 읽기/쓰기 버전 제어 권한이 유지됩니다. 누군가 로컬 하드 드라이브에서 변경을 하면 파일 사본이 생성됩니다. 원본을 변경할 수 없고, 원본만 참조합니다. 누군가 뭔가를 수정하다가 실수를 하더라도, 다음에 추가 기능을 로드할 때 원본이 로드됩니다. 변경 사항은 로드되지 않습니다. 어떤 상황에서도 버전 제어, 즉 보호된 워크플로가 유지됩니다.
OneDrive 위치 설정은 여러 가지 방법으로 할 수 있습니다. 제가 찾은 가장 쉬운 방법은 Teams를 이용하는 것입니다. 오늘 이 세션의 데모 부분은 Teams에서 시작하겠습니다. Teams에서 팀을 설정하면 필요한 SharePoint 사이트가 자동으로 생성됩니다. 그런 다음 Teams에서 해당 사이트에 폴더를 추가하고, 동기화도 설정할 수 있습니다.
원하시면 SharePoint 사이트로 이동하실 수 있습니다. 사용자들이 하는 일이 바로 이겁니다. SharePoint 사이트에 직접 가서 동기화를 설정하면 됩니다. 여기서 보기, 편집, 다운로드 등의 권한을 부여할 수 있습니다. 콘텐츠에 대한 권한도 부여할 수 있고, 추가 기능에 대한 액세스 제어 권한도 부여할 수 있습니다. 정말 편리하죠. 어떻게 하는지 잠깐 살펴보겠습니다.
여기 Teams입니다. 저는 Teams를 사용하고 있습니다. 사실 저는 여기 Teams 그룹에 속해 있습니다. 들어가면 보통 보이는 버튼이 있는데, 지금은 이렇게 작은 버튼이 있습니다. "새 팀 만들기" 버튼이 있죠. 새 팀을 만들고 채널을 만드세요. 채널에 들어가면, 채널 아래에 파일이라는 옵션이 있습니다.
새 파일이나 폴더를 만들 수 있습니다. 저는 보통 새 폴더를 만들고 "추가 기능 콘텐츠"라고 부릅니다. 여기서 작은 점들을 사용할 수 있는데, 여기에는 다운로드하거나 SharePoint에 동기화할 수 있는 옵션이 있습니다. SharePoint 드라이브를 열겠습니다. 여기가 제 SharePoint 드라이브입니다. 같은 위치에 있습니다. 실제로 저는 그 폴더 안에 있습니다. 여기에 추가 기능의 콘텐츠가 있습니다. 보여드릴 추가 기능의 핵심 내용입니다.
여기 세 개의 점 아래에 '동기화'라는 옵션이 있습니다. 제 파일 시스템에서는... Windows에서는 조금 다르게 보이지만, Mac에서는 공유 라이브러리 위치를 만들고 여기에 폴더의 복사본을 만듭니다.
이제 이 폴더를 변경하면, 편집 권한이 있기 때문에 이 파일을 변경하면 이 폴더에 접근할 수 있는 다른 모든 사용자에게 변경 사항의 사본이 자동으로 전달됩니다. SharePoint 사이트에도 전달되고, 그 후 다른 모든 사용자에게도 전달됩니다. 여기서부터 편집을 시작합니다.
이제 파일을 잠깐 살펴보겠습니다. 이건 그렇게 중요한 건 아니고, 그냥 내용만 있습니다. 하지만 이 파일 중 하나가 어떻게 생겼는지 한번 살펴보겠습니다. 이건 제가 만든 추가 기능 자체인데, 제가 안내해 드리겠습니다... 추가 기능 자체를 만드는 방법은 설명하지 않겠습니다. 추가 기능 마법사를 사용하는 것뿐이니까요.
여기 있는 것들을 살펴보죠. 이 부분들은 우리가 크게 신경 쓰지 않는 부분입니다. JMP가 알아야 하는 부분입니다. 우리가 신경 써야 하는 부분은 애드인 실행기와 애드인 환경 설정 두 가지입니다. 애드인 환경 설정은 폴더나 파일로 되어 있습니다. 며칠 전 테스트할 때 삭제되어서 선택하지 않은 상태로 여기에 넣어두겠습니다.
기본적으로 이렇게 찾아야 합니다. 이 셸 스크립트에서 일어나는 일은 "이 추가 기능의 추가 기능 콘텐츠는 어디에 있나요?"라는 메시지를 표시하는 것입니다. 이 메시지를 받으면 이 환경 설정 스크립트에 다시 기록하여 추가 기능을 실행할 때마다 다시 묻지 않도록 합니다. 한 번만 묻고 기억해 두는 것입니다.
이 셸 스크립트를 아주 간략하게 공유해 보겠습니다. 블로그는 삭제해 보겠습니다. 세 개의 아주 짧은 코드가 있습니다. 여기서는 살펴볼 내용이 많지 않습니다. 이 추가 기능의 JSL이 실제로 어디에 있는지 묻는 대화 상자가 있습니다. 환경 설정을 열어 보세요. 그러면 코드를 열려고 하거나 어디에 있는지 묻는 루프가 있습니다. 여기서는 이것만 살펴보겠습니다.
이 추가 기능을 만들어서 추가 기능 폴더에 넣었습니다. JMP에 접속해서 "데모"라고 입력하면 "자, 여기..."라고 뜨는데, 아래쪽에는 안 보이지만 "교육 시작 디렉터리를 선택하세요."라고 나옵니다. 이 추가 기능의 경우 말이죠. 본문을 바꾸는 걸 깜빡했네요. 그냥 "여기가 제 공유 드라이브이고, 여기가 제 폴더 위치입니다."라고 입력하면 됩니다. "좋아요, 열기"라고 하면 됩니다. 추가 기능은 OneDrive에서 실행되었습니다.
제가 할 수 있는 건 여기로 돌아가서 이 파일을 다시 열면 이 추가 기능 파일에 다른 텍스트가 있다는 겁니다. 들어가서 추가 기능 자체를 추가했죠. 이제 그 추가 기능을 다시 실행해 보겠습니다. 이제 아래쪽에 새 텍스트가 표시됩니다. 이게 얼마나 복잡한지 알려드리기 위해, 이 기능을 활용하는 두 가지 추가 기능을 간략하게 보여드리겠습니다. 모든 내용을 자세히 설명하지는 않겠습니다. 일단 닫아 두겠습니다. 제가 원하는 건 이겁니다.
첫 번째는 제가 만든 JMP on the Spot입니다. 오늘 논의할 개념을 실제로 활용하여 웹 브라우저나 뷰어 유형의 콘텐츠를 가져오는 것입니다. 저장소나 라이브러리라고 표현하는 것이 더 적절할 것 같습니다. JMP on the Spot을 실행하면, 여기 있는 모든 콘텐츠는 클라우드에만 존재합니다. 제가 열어보고 싶으면 실시간으로 해당 콘텐츠를 다운로드합니다.
또 다른 옵션은 SE로서 새 릴리스를 학습할 때 자료를 관리하는 데 사용하는 것인데, JMP 19에 매우 적합합니다. 하지만 여기에 자료가 저장됩니다. 바로 이 추가 기능을 사용하고 있습니다. 이 GUI와 이와 관련된 모든 것은 OneDrive에 있습니다.
실제로 확인해 보면, 바로 여기에 있습니다. 제 하드 드라이브에 있는 실제 애드인에 있는 건 이미 봤던 환경 설정 파일뿐이고, 데모 예시에서 보여드린 파일과 똑같습니다. 나머지는 모두 실시간으로 처리됩니다. 팀에서 편집하는 동안 하드 드라이브로 다운로드했습니다.
JMP 19, JMP 18 자료가 업로드되면 OneDrive에 자동으로 업로드되고, 제 컴퓨터에도 자동으로 다운로드됩니다. 애드인, 비디오 등, 가끔 교육을 받는 대용량 콘텐츠 업데이트에 대해 걱정할 필요가 없습니다. 이런 자료들은 클라우드에 저장되어 있어서 다운로드할 필요가 없습니다. 굳이 다운로드할 필요도 없고, 하드 드라이브 공간도 차지하지 않으니까요.
오늘 무엇을 확인했을까요? OneDrive는 코드 베이스를 관리하고, 업데이트를 쉽게 배포하고, 액세스 및 권한을 제어할 수 있는 기능을 제공하며, 초보자도 쉽게 사용할 수 있다는 것을 확인했습니다. JSL을 직접 작성하는 경우를 제외하고는 추가 코딩이 거의 필요하지 않습니다. 이미 필요한 모든 것을 알고 있기 때문입니다. 한 가지 중요한 점은 추가 기능이 반드시 추가 기능 저장소에 있어야 한다는 규칙이 없다는 것입니다.