IBM Bob

IBM Bob으로 IBM i 작업하기

플랫폼에 대한 간단한 둘러보기, 일상적인 마찰, IBM Bob이 오늘날 IBM i 개발자의 워크플로우에 어떻게 적합한지, 그리고 다음으로 향하는 방향.

IBM Bob으로 IBM i 작업하기

저자

Peter MaTim Rowe

게시됨

카테고리

announcement

공유

IBM Bob으로 IBM i 작업하기

RPG 한 줄도 작성해본 적이 없다면, IBM i는 대규모 프로덕션을 위한 가장 매력적인 플랫폼 중 하나입니다. 수백만 줄을 작성했다면, 일상적인 고통이 어디에 있는지 이미 알고 있습니다. 이 게시물은 두 가지를 모두 다룹니다: IBM i를 독특하게 만드는 것에 대한 기술적 스케치, 현대화 마찰이 실제로 나타나는 곳, IBM Bob이 오늘날 IBM i 워크플로우에 어떻게 적합한지, 시작하기 위한 설정 단계, 그리고 플랫폼의 로드맵에서 다음에 올 것입니다.

IBM i가 실제로 무엇인지

IBM i는 "이것을 다시 작성해야 한다"는 의미의 레거시 운영 체제가 아닙니다. 그것은 통합 플랫폼입니다 — OS, 데이터베이스, 보안 모델, 런타임이 하나로 설계되고 제공됩니다 — 수십 년 동안 은행, 보험사, 병원, 제조업체, 물류 회사를 위해 수익을 창출해 왔습니다. 따라서 우리는 그것을 전설적이라고 불러야 합니다.

처음 보는 개발자들을 놀라게 하는 몇 가지 세부 사항:

  • Single-level storage. RAM과 디스크는 하나의 가상 주소 공간을 공유합니다. 객체 포인터는 재부팅을 넘어 지속됩니다. OS는 메모리와 스토리지를 단일 계층으로 취급하고 그들 사이를 투명하게 페이징합니다. 대부분의 최신 시스템은 여전히 이것을 따라잡고 있습니다.
  • TIMI, Technology Independent Machine Interface. 1990년대 하드웨어에서 컴파일된 RPG 바이너리는 현재 POWER 칩에서 수정 없이 실행됩니다. OS는 내부적으로 새로운 명령어 세트에 대해 재번역합니다. 가장 가까운 현대적 유사물은 수십 년 전의 WebAssembly입니다.
  • 객체 기반 OS. 프로그램, 파일, 큐, 권한은 속성을 가진 타입이 지정된 객체입니다 — 메타데이터가 추가된 파일이 아닙니다. 보안은 객체 수준에서 적용됩니다.
  • Db2 for i는 통합되어 있으며 추가되지 않았습니다. SQL과 네이티브 레코드 수준 I/O는 동일한 데이터에 액세스합니다. 40년 된 물리적 파일은 마이그레이션 프로젝트 없이 최신 SQL 뷰를 통해 쿼리할 수 있습니다.
  • 소스는 시스템이나 Git에 있을 수 있습니다 — 당신의 선택입니다. 역사적으로 IBM i 소스는 소스 물리적 파일(QSYS) 내의 멤버로 저장되어 시스템에서 직접 컴파일되었습니다. 플랫폼은 원래 LPAR을 진실의 소스로 위치시켰습니다. 그러나 IBM i는 진화했습니다: 컴파일러와 OS는 이제 선택하면 최신 Git 중심 워크플로우, IFS 스트림 파일 및 로컬 개발을 완전히 지원합니다. 많은 상점에서 여전히 QSYS 라이브러리를 사용하지만 플랫폼은 옵션을 제공합니다

플랫폼은 또한 즉시 사용 가능한 최신 전달 패턴을 지원합니다: OS의 일부로서의 네이티브 REST API 엔진, Power Virtual Server를 통한 하이브리드 클라우드, 트랜잭션 워크로드와 동일한 하드웨어에서 실행되는 AI 추론. RPG, COBOL, CL, SQL은 엔지니어링 조직의 나머지 부분이 이미 사용하는 개발 관행과 공존합니다.

플랫폼은 문제가 아닙니다. 마찰은 그 주변에 있습니다.

마찰이 나타나는 곳

거의 모든 IBM i 상점에서 네 가지 패턴이 나타납니다. 그 중 어느 것도 RPG 자체에 관한 것이 아닙니다 — 언어는 괜찮습니다 — 그러나 결코 기록되지 않은 코드 주변의 컨텍스트와 플랫폼이 해당 컨텍스트를 저장하고 공유하는 방식에 관한 것입니다.

  • 설계에 의한 암시적 컨텍스트. 작동하는 RPG 프로그램은 하나의 소스에서 네 가지 언어 세대를 포괄할 수 있습니다 — RPG II, RPG IV, /COPY 카피북(컴파일 시 가져온 공유 선언), 자유 형식 프로시저 — 열에 민감한 구문과 번호가 매겨진 표시기(*IN01*IN99)가 대부분의 다른 언어에서 구조화된 제어 흐름과 명명된 부울이 하는 작업을 수행합니다. 구문은 일주일 안에 배울 수 있습니다; 그 주변의 규칙과 비즈니스 규칙은 시니어 엔지니어의 머리 속에 있습니다.
  • 변경은 결코 로컬이 아닙니다. 필드의 타입은 그것을 사용하는 프로그램에서 선언되지 않습니다 — 데이터베이스 테이블 자체에서, 별도의 소스 파일(DDS 멤버)에서 선언됩니다. 해당 테이블을 읽거나 쓰는 모든 프로그램은 상단에서 파일을 참조하는 것만으로 해당 정의를 상속합니다. 따라서 한 열을 10자리에서 12자리로 늘리는 것은 결코 하나의 프로그램 편집이 아닙니다: 파일을 건드리는 모든 프로그램을 통해 파급되며, 해당 프로그램 목록은 어디에도 기록되지 않는 경우가 많습니다. 따라서 중요한 워크로드에 대한 각 변경은 연속성 위험을 수반하며 현대화가 정체됩니다.
  • 소스는 최신 도구가 예상하는 곳에 거의 존재하지 않습니다. 프로그램의 정식 사본은 시스템에 있으며 노트북의 Git 리포지토리에 있지 않습니다. 15년 전에 다른 사람이 작성한 코드를 읽는 것은 LPAR에서 찾고, 내보내고, 내보내기가 정식 사본인지 결정하는 것으로 시작됩니다 — 로컬 작업 트리를 가정하는 모든 도구가 그 가치를 증명하기 전에 적응해야 하는 워크플로우입니다.
  • 고정 형식 RPG는 최신 코드와 전혀 닮지 않았습니다. 대부분의 프로덕션 RPG는 고정 형식으로 작성되었습니다: 작업 코드가 열 26–35에 있고, Factor 1이 12–25에 있으며, 주석은 열 80 이후에만 맞는 열에 민감한 구문. Python이나 JavaScript로 훈련받은 사람에게는 어셈블리 언어처럼 읽힙니다. IBM은 완전히 자유 형식 RPG(RPG IV, 나중에 단순히 "RPG")로 언어를 재발명했습니다. 이것은 최신 절차적 언어처럼 보이고 느껴집니다 — 구조화된 블록, 명명된 변수, 표준 표현식. 구문 격차는 현실이지만 언어 자체는 진화했습니다. 마찰은 수십 년의 작동하는 코드가 여전히 고정 형식이며, 그것을 다시 작성하는 것은 대부분의 상점이 정당화할 수 없는 위험을 수반한다는 것입니다.

Bob이 IBM i용 RPG 애플리케이션에서 하는 일

Bob을 RPG 프로그램에 가리키고 Ask 모드에서 시작합니다:

  • "이 프로그램이 무엇을 하는지, 어떤 파일을 건드리는지 안내해주세요."
  • "CUSTNO는 어디에 설정되고, 그 후 어떤 프로그램이 그것을 읽나요?"
  • "이 필드의 길이를 변경하면 무엇이 깨질까요?"

변경 사항이 있을 때 Plan 모드로 전환합니다: 자유 형식 변환, 레코드 수준 I/O에서 벗어난 SQL 마이그레이션, 또는 모놀리스를 모듈로 분해. Bob은 파일이 수정되기 전에 계획, 건드린 종속성 및 수행할 단계를 생성합니다.

변경 사항을 적용하려면 Code 모드로 전환합니다. Bob:

  • 반복 가능한 패턴을 사용하여 고정 형식 RPG를 자유 형식으로 변환합니다. 파일별로.
  • 적절한 경우 레코드 수준 I/O를 임베디드 SQL로 마이그레이션합니다.
  • 기존 프로시저에 대해 RPGUnit 테스트 스위트를 생성하여 변환이 컴파일될 뿐만 아니라 검증 가능하도록 합니다.
  • 소스에서 평문 문서와 Mermaid 다이어그램을 생성합니다 — 검색 가능하고 공유 가능한 아티팩트로 어떤 엔지니어보다 오래 지속됩니다.

동일한 워크플로우는 RPG II/III/ILE, CL, DDS, SQL, COBOL을 처리하므로 태어나기 전에 작성된 프로그램을 읽는 신입 사원은 더 이상 구문에 의해 차단되지 않습니다.

IBM i 소스를 Bob 준비 상태로 만들기

Bob은 오늘날 로컬 컴퓨터의 소스에 대해 작동합니다. 설정은 짧습니다:

  1. 소스를 다운로드합니다. RPG, RPGLE, CL, DDS, SQL 멤버를 로컬 폴더로 내보냅니다. Code for i 프로젝트 탐색기는 물리적 파일 멤버에서 내보내기를 문서화합니다: migrate source
  2. Bob에서 폴더를 엽니다. 소스 루트에서 File → Open Folder. Bob은 첫 번째 열기 시 코드베이스를 인덱싱합니다.
  3. IBM i 툴체인을 설치합니다. Extensions 패널에서 IBM i Development Pack(Code for i 번들)과 Bob이 생성하는 다이어그램용 Mermaid 렌더러를 추가합니다.
  4. Ask 모드에서 세션을 시작합니다. 단일 프로그램을 선택합니다 — 이상적으로는 팀의 누구도 완전히 이해하지 못하는 것 — 그리고 Bob에게 설명하도록 요청합니다. 그것은 Bob이 워크플로우에서 자리를 차지하는지 확인하는 가장 빠른 방법입니다.

팀이 SEU 또는 RDi에서 온 경우 마이그레이션은 주로 위의 내보내기 단계와 확장 설치입니다. 편집 표면은 구문 강조, 코드 완성 및 앞서 설명한 AI 워크플로우를 갖춘 최신 VS Code 패밀리 환경입니다; 줄 번호는 원하는 엔지니어를 위해 여전히 사용 가능합니다.

IBM i의 Bob에 대한 다음 단계

최근 발표된 Premium Package for i는 IBM i 개발 팀을 위한 네이티브 및 최적화된 경험을 제공합니다. Premium Package for i는 6월 24일에 일반 제공됩니다.

Premium Package for i. 6월 24일 GA와 함께 Bob은 IBM i에 직접 연결됩니다. 단일 세션에서 QSYS에서 직접 소스 멤버를 읽고, 위와 동일한 워크플로우로 편집하고, 시스템에 대해 직접 컴파일 및 테스트 주기를 실행합니다. 연결성과 함께 Bob은 IBM i 개발에 맞춰진 내장 스킬과 워크플로우를 습득합니다 — 고정에서 자유로의 변환, 리팩토링, 문서 생성 — RPG 코드베이스의 시작 프롬프트가 즉시 IBM i 규칙에 더 직접적으로 도달하도록 합니다. 구체적으로 이것은 다음을 의미합니다:

  • 개발 LPAR에 연결된 하나의 Bob 세션; 별도의 내보내기-편집-가져오기 루프가 없습니다.
  • IBM i의 컴파일 오류 및 테스트 결과가 Bob이 이미 있는 대화로 다시 나타납니다.
  • IBM i 상점이 반복적으로 실행하는 리팩토링, 변환 및 테스트 생성 패턴을 위한 내장 스킬 및 워크플로우.

더 나아가 — 엔드투엔드 SDLC. 향후 릴리스를 위해 세 가지 스레드가 활발히 설계 중입니다:

  • DevOps 통합. IBM i 워크로드를 위한 빌드, 배포, 모니터 및 CI/CD에 Bob 참여 — 테스트 LPAR에 대해 회귀 패스를 실행하고, 환경을 통해 변경 사항을 승격하고, 런타임 문제를 세션으로 다시 가져옵니다.
  • SQL 성능. Bob이 오늘날 이미 생성하는 임베디드 SQL 마이그레이션 패턴 위에 일급 기능으로서의 데이터 분석 및 인덱스 최적화.
  • IBM i 지식 어시스턴트. 코드베이스, 설계 문서 및 티켓 전반에 걸친 검색 기반 답변 — 소스 외부에 있는 컨텍스트가 동일한 대화에서 도달 가능하도록.

오늘 Bob을 채택하는 팀의 경우 위의 로컬 파일 워크플로우가 올바른 시작점입니다; 이 섹션의 항목은 IBM i 제공이 성숙함에 따라 해당 워크플로우가 어떻게 단축되고 확장되는지 설명합니다.

고객 참조

의료, 농업, 엔터프라이즈 IT 및 물류 팀은 오늘날 프로덕션 IBM i 코드베이스에 대해 Bob을 사용하고 있습니다:

  • MEDHOST. 미국 병원 배포 전반에 걸쳐 여러 RPG 세대를 포괄하는 의료 애플리케이션. 팀은 영향 분석 및 고정에서 자유로의 변환, 그리고 원래 저자가 오래 전에 떠난 프로그램에 새로운 개발자를 온보딩하는 데 Bob을 사용합니다.
  • NI+C. 살아남은 설계 문서 없이 10년 이상 변경 없이 실행되어 온 RPG 프로그램을 가진 일본 엔터프라이즈 통합업체. Bob은 이전에 AI 어시스턴트에서 튕겨 나간 엔지니어가 실제 작업을 위해 계속 사용할 만큼 충분히 정확한 설계 문서와 Mermaid 다이어그램을 생성했습니다.
  • Heartland Co-op. 곡물 품질 및 장비 모니터링을 위해 IBM i 환경으로 실시간 IoT 센서 데이터를 스트리밍하는 아이오와 기반 농업 협동조합. Bob은 개발자가 IoT 파이프라인, 곡물 회계 및 핵심 운영 시스템 간의 상호 의존성을 추론하는 데 도움을 주고 신입 사원의 램프업을 단축합니다.
  • Carreras Grupo Logístico. 스페인에서 최초의 엔터프라이즈 Bob 채택자 중 하나로, 레거시 프로그램 로직을 설명하고, 문서를 생성하고, 물류 플랫폼의 모듈 전반에 걸쳐 리팩토링하는 데 사용합니다.

네 가지 모두에 걸친 공통 스레드는 동일합니다: 기존 IBM i 코드베이스는 그대로 유지되고, 설명, 변환 및 문서 작업은 교체 프로젝트 앞이 아니라 프로덕션 시스템과 함께 실행됩니다.

시작하기

  • 무료 평가판 시작
  • 하나의 RPG 프로그램을 로컬 폴더로 가져와 Bob에서 엽니다.
  • Ask 모드에서 워크스루와 데이터 흐름의 Mermaid 다이어그램을 요청합니다.

그 세션 — 하나의 프로그램, 하나의 대화 — 은 Bob이 팀이 작업하는 방식에 맞는지에 대한 실제 답변으로 가는 가장 짧은 경로입니다.