(이 글은 AS/400에 부딛혀서 삽질을 하게 될 미래의 저같은 개발자를 위해 레퍼런스 성으로 쓰는 글입니다.)
IBM에서 나온 AS/400이라는 서버 하드웨어가 있습니다. 몇년 전 IBM에서 iSeries라고 이름을 바꾸었습니다만, 워낙 오랫동안 AS/400이라고 불러온 데다가 최근에 점유율이 떨어지고 있는 추세여서 지금도 iSeries보다는 AS/400이라고 많이 부릅니다.
AS/400의 분류를 보자면 ‘미니 컴퓨터’입니다. 유닉스 머신이 본격적으로 나오기 전에 나왔던 부류이고, 대학에서 전산학 개론을 배울 때 컴퓨터의 역사에서 메인프레임의 축소판으로 등장하는 바로 그 미니 컴퓨터입니다. 전산 관련 학과를 다니신 분들은 아련하게 PDP, VAX 등의 이름이 떠오를 동 말 동 하실 겁니다. AS/400은 그 계보를 잇는 마지막 세대입니다. 메인프레임의 축소판이고 기본적으로는 유닉스보다는 윗급이라서, 당연히 비쌉니다. -.-;;;; (물론 요즘은 유닉스 서버도 무쟈게 화려한 사양의 엄청 비싼 넘들도 나옵니다만)
(참고로, 새로 정리된 IBM의 서버 브랜드 분류를 보면, 메인프레임은 zSeries, 미니컴퓨터인 AS/400은 iSeries, 유닉스는 pSeries, x86 서버는 xSeries입니다. 대체로 비싼 순서입니다.)
이 AS/400은 2000년대 초중반까지만 해도 국내에서 상당히 많은 기업들에서 사용되었었습니다. 좀 비싸긴 하지만, 유닉스와는 차별화되는 탁월한 성능과 안정성이 있거든요. 물론 메인프레임 아키텍처의 축소판이라서 그렇습니다. ㅎㅎㅎ
하드웨어 자체의 덩치도 좀 큰편이고, 고가 컴퓨터로서 싸구려 랙 케이스가 아닌 전용의 묵직한 금고 스타일 케이스로 나옵니다(위 그림을 보셈). 따라서 웬만한 IDC에서는 받아주지도 않는 것이 당연하고, 그러니 대부분 자체 서버룸을 운영할 정도의 중견급 기업들에서 주로 AS/400을 사용하죠.
이 AS/400을 개발자나 운영자의 입장에서 눈 앞에 두고 봤을 때의 가장 문제는, 메인프레임과 마찬가지로 AS/400은 오픈 아키텍처가 아닌 벤더 고유의 아키텍처를 사용한다는 것입니다. 이게 얼마나 ‘고유’스럽냐 하면… 도스, 윈도우, 유닉스 계열만 만져본 사람은, AS/400 콘솔 앞에 앉아서 전혀 아무것도 할 수 있는 것이 없습니다. 유닉스와도 완전히, 아주 완전히 다른 OS입니다. 이런 이유로 AS/400은 해킹 가능성이 아주 희박합니다. AS/400을 해킹하려면 OS 개론부터 처음부터 다시 공부해야 하거든요. 해커가 어떻게 뚫고 들어가봤자, 디렉토리 파일 리스팅도 못하는 상태에서 뭘 하겠습니까. AS/400은 보통 5250 터미널을 통해서 관리하고요.
AS/400의 OS의 정식 명칭은 OS/400인데, 대부분 그냥 AS/400 OS라고 부릅니다. 다른 어떤 머신에서도 돌아가지 않는 오직 AS/400만을 위한 OS를 뭐하러 고유의 이름으로 부르겠습니까. 또 AS/400 OS에는 DB가 기본 내장되어 있는데… 아니 정확하게 말해서 AS/400 OS 자체가 DB입니다. 너무나 완벽하게 통합되어 있죠. 그런데 이 AS/400 DB를 IBM이 94년부터 다른 DB2와 통칭해서 DB2라고 불러버리는 바람에 많은 개발자, 사용자들이 적지 않은 혼란을 겪습니다.
사실 AS/400 DB는, 일반적인 DB2와 완전히 다른 DB입니다. 같은 회사의 제품이니까 SQL 문법이 조금 유사하기는 하지만, 더 중요한 데이터베이스의 아키텍처가 완전히 다릅니다. 기본적으로, AS/400 DB는 RDBMS, 그러니까 관계형 데이터베이스가 아닙니다. 파일 데이터베이스죠. 그래서 기본 모드에서는 트랜잭션도 없고, 더욱이 황당한 것은 BLOB 같은 것이 전혀 없습니다. BLOB에 익숙한 대부분의 개발자나 DBA들은 이 문제에 부딛히면 좌절할 수밖에 없습니다.
(여기서 ‘일반적인 DB2’는, 지금 상황에서 정확하게 명칭을 부르자면 DB2 for LUW입니다. DB2 for Open Systems라고도 했었는데, 지금은 LUW가 더 많이 쓰입니다. 여기서 LUW는 Linux, Unix, Windows를 말하는 거구요. 몇년 전까지만 해도 이 DB2 for LUW를 원래는 DB2 UDB라고 더 많이 불렀었는데, 최근 몇년 사이에 IBM이 UDB에 메인프레임과 AS/400까지 다 집어넣어버리는 어이없는 짓을 저지르는 바람에, 지금은 DB2 UDB라고 부르면 서로 다른 DB2 제품들을 통칭하는 게 되어버렸습니다. IBM은 정말… 브랜드 장난의 지존 중의 지존입니다)
그래도 이 AS/400을 RDBMS 모드로 돌릴 방법이 있습니다. 그걸 IBM의 용어로 ‘저널을 건다’라고 하는데요. 저널을 걸어야만 트랜잭션이 가능한 등 일반적인 RBMS처럼 동작합니다. 그런데.. 테이블들에 이 저널을 걸면, 막강한 성능을 자랑하던 AS/400의 속도가 파바박 떨어져버립니다. 그럼 별 의미가 없겠지요? 그래서 IBM에는 이 저널을 걸고도 성능 하락을 5~7% 수준에서 묶는 기술이 있습니다. 그리고…. 이 옵션이 유료입니다. 그것도 아주 아주 비쌉니다. (IBM은 참 재미있습니다. 이런 장사를 정말 잘합니다)
그리고 SQL 문법도 일반적인 SQL과 약간 다르고, 어이없게도 IBM의 같은 브랜드인 일반 DB2의 SQL과도 다릅니다. 그런데 상대적으로 AS/400 관련 SQL 관련 자료는 너무 적습니다. 그럼 어떻게 하느냐? 메인프레임, 그러니까 z OS 혹은 z Series의 SQL 문법을 보면 됩니다. 메인프레임 쪽 자료는 그래도 꽤 많은 편이고, AS/400과 아주 유사합니다.
이 AS/400이 델파이와 연동되어 사용되는 경우가 상당히 많습니다. 제가 몇년째 출입을 하는 중견 제조업체 한군데에서 이 AS/400을 쓰고 있고요. (그쪽 기술 컨설팅을 진행하면서 저의 AS/400 분투기가 시작되었고, 이 글에서 쓰고 있는 제 AS/400 지식들도 그 업체에서 삽질하며 연구, 경험했던 내용들입니다)
글이 너무 길어질 것 같으니까.. 이번에는 여기까지, AS/400에 대한 개략적인 소개만 하고 델파이나 C++빌더에서 연결하는 방식에 대해서는 다음 포스트에서 이어 쓰겠습니다.
책에서나 보던 PDP 시리즈의 후속이 저거엿군요…
근데 왜 저 아키텍쳐를 유지하지 않고 유닉스를 만든걸까요
AS/400을 비롯한 미니컴퓨터들은 개방형 아키텍처가 아닌 벤더 고유의 아키텍처를 이용합니다(물론 그 상위인 메인프레임도 마찬가지죠). 예를 들면 AS/400에는 그 흔한(?) 오라클도 올릴 수 없습니다. (최근에는 AS/400에 IBM의 가상화 레이어를 통해 리눅스를 깔고 거기에 오라클을 깔 수는 있게 되었습니다만..)
플랫폼의 환경이 폐쇄적이다보니 소프트웨어 호환성이 떨어지고(같은 IBM의 DB2들 사이에서도 호환이 안되는 지경이니 말이죠) 다른 벤더들의 지원을 받을 수가 없구요.
요즘에야 오픈, 이라고 하면 리눅스를 떠올리는 세상이 되었지만, 유닉스가 오픈 플랫폼의 첫번째 기수였죠. 리눅스도 물론 유닉스의 파생이고, 좀 더 크게 보자면 DOS나 Windows조차도 유닉스의 영향권 아래에 있다고 할 수 있고요. 개방형 플랫폼이 등장하면서 본격적으로 소프트웨어의 시대가 시작되었다고 볼 수 있을 것 같습니다.
하긴… Windows 조차도 과거에 POSIX 호환성이 있을 정도니 오픈이라고 해도 되겟군요 Unix를.
근데 저도 참 궁금했지만… 요즘 메인프레임 광고보면 리눅스 깔려있다고 나오는데 대체 차이점이 뭔지 모르게되버린..
AS/400에 대한 지식이 좀 짤은듯한 상태에서 단정이 많은듯 하네요..
좀더 확인해보세요.
몰라서 못쓰는것이 많은듯하네요…
메뉴얼도 좀더 보시고… 공부하시면 아실듯…
아이쿠, AS/400 전문가이신가 봅니다. 저도 나름 IBM의 웬만한 문서들은 거의 다 뒤져보면서 별의 별 삽질을 다 하면서 공부를 했던 겁니다만, 역시 제대로 경험하신 분에게야 전혀 미칠 수 없겠지요. 부끄럽습니다.
그런데 저보다 훨 많이 아시는 것 같은데 알면서도 안쓰시는 분이신가봅니다. 짧은 지식이나마 나누려는 생각과, 잘 모르는 녀석들은 비웃어주고 지나가면 그만이라는 생각, 둘 중 어떤 것이 나을지 한번 생각해봐주시면 좋겠습니다.