범일정보는 공공기관 정보시스템을 개발하는 SW개발사업본부와

시스템통합구축/운영 및 유지관리의 사업을 하는 1사업본부가 주력입니다.

SW개발사업본부와 시스템엔지니어본부에 필요한 기술에 대해서 문의한 결과,

아래와 같은 답을 들었기에 정리해 전달 드립니다. 도움이 되기를 바랍니다.

물론, 즉시전력감으로 아래와 같은 기술을 경험하고 어느정도 갖추고 대학교를 졸업하면 좋겠지만,

현실적으로는 어려우며, 그러한 기술을 갖출 수 있는 기본만 가지고 있으면,

입사 후 기업에서 사수/부사수 개념으로 고참이 붙어서 교육을 해서 역량을 강화한 후에,

사용한다고 생각하고 있으므로, 기본을 잘 익히고 면접에서 자신감 있게 대답하고 입사 후 잘 배우는 자세가 있으면 충분하다고 생각합니다.

/* 신입SW개발자로서 필요한 기술(소프트웨어 개발에 관심이 있는 학생들) */

공공부문(정부, 공공기관, 지자체)에서 SW개발(SI)을 하는 ICT업체의 경우, 업무포털, 업무정보시스템 SW개발을 하는 순수 SW 개발사업과 기존에 개발된 SW에 대한 기능개선, 추가기능개발 등의 유지보수 사업이 있으며, 이러한 SW개발(SI) ICT업체에서 채용예정인 신입SW개발자로 에게 바라는 기술요구사항으로는 아래와 같은 기술분야에 대한 이해와 역량이다.

Spring 기반의 전자정부프레임워크에 대한 이해, DB(MariaDB, MySQL, Cuburid 등)에 데이터를 넣고 SQL Query를 통해서 데이터를 가져와서 업무 로직에 따라서 가공하고, JSP 혹은 Java에 의해 결과가 웹으로 보여지도록 프로그램을 개발하는 것에 대한 전반적인 이해와 개발역량이 요구된다.

SW개발자는 설계된 내용대로 UI를 코딩하여 사용자 입력(input)을 받고 DB에서 데이터를 가져와서 업무 로직에 따라 데이터를 가공 및 처리하고 처리된 결과를 웹으로 보여주도록(viewing, output) JSP, Java로 코딩하여 개발한다.

대학교 학부과정에서

① 자료구조(Data Structure),

② 데이터베이스론(DB),

③ Java 프로그래밍

등의 과목에 대한 수강이 필요하며,

특히 DB의 경우 DBMS를 이용해서 데이터를 넣고 빼는 단계를 넘어서서, 직접 source code 상에서 SQL Query 문장을 던져서 DB를 핸들링 할 수 있으면 더욱 좋다.

그래서, 회원 가입 화면 혹은 로그인 화면의 전체 기능을 코딩하고 개발할 수 있다면, 즉, 가입 희망하는 회원의 이름, 전화번호, 주소 등의 데이터를 입력 받아서 DB의 기존 데이터와 비교해서 중복이 아니면 DB에 넣고 회원 가입 완료되었다는 결과를 웹으로 JSP, Java로 코딩해서 보여주는(viewing, output) 전체 기능을 개발할 수 있다면, 어떤 SW개발(SI)회사에도 갈 수 있을 것이다. 이는, Spring 기반의 전자정부프레임워크, DB(MariaDB, MySQL, Cuburid ...)에 데이터를 넣고 SQL Query를 통해서 데이터를 가져와서 JSP, Java로 보여지도록 프로그램 개발이 가능하다는 의미이다.

위와 같은 기본역량 위에, Big Data, AI, Smart City, Block Chain 관련 시각화 역량, Open Source 중에서 데이터 수집이나 관계형DB(RDB)가 아닌 NoSQL DB의 엘라스틱 서치(elastic search) 등의 역량이 추가되면 특정 분야로 프로그램 개발로 발전할 수 있다. 하지만, SW개발 기본역량 위에 추가역량이 얹어져야 하므로, 기본역량을 갖추는 것이 무엇보다 중요하다.

* SW개발자의 경우, WEB/WAS 서버, 미들웨어 같은 시스템SW를 설치하고 구성(configuration)할 수 있는 역량이 있으면 도움이 되지만, 반드시 필요한 필수사항은 아니며, SW개발자가 많은 서버들에 WEB/WAS서버 설치하고, 구성(configuration)하고, 그리고 문제해결까지 하는 다양한 현장 경험을 쌓아서 해당 분야 전문가가 되기는 어렵다. 따라서, 하드웨어 설치 구성 및 시스템 SW설치에 전문가인 시스템 엔지니들이 WEB/WAS 서버를 설치해놓으면, SW개발자는 이용만할 수 있으면 충분.

/* 신입 시스템엔지니어로서 필요한 기술(하드웨어에 관심있는 학생들) */

시스템 엔지니어의 기본소양 중에서 가장 중요한 것은 "학과교육".

시스템 엔지니어가 되고자 한다면, 다음 교과목은 철저히 수강해야 함.

① 컴퓨터구조론

② 운영체제론

③ 컴퓨터 네트워크

④ 가상화, 클라우드 (<- 대학교에서 수강하기에는 현실적으로 조금 어려움이 있는 과목)

컴퓨터 구조론에서는 물리적 장치의 기본 구성요소를 배우게 되며,

CPU, Memory, Disk, I/O 장치 등에 대해서 공부하게 됨.

이러한 공부가 그대로 다음 과목으로 연결되는 것이 좋음.

운영체제론에서는 컴퓨터 구조론에서 배운 컴퓨터의 각 구성요소를

운영체제에서 어떻게 관리하는 지에 대해서 공부하게 됨.

컴퓨터구조론과 운영제체론을 제대로 배우고, 본인이 조금 노력하면,

컴퓨터 네트워크나 가상화/클라우드 부분은 자연스럽게 습득이 가능한 부분이지만, 때로는 별도 교과목으로서의 개설이 요구됨.

위와 같은 교과목에 대해 배우고, 실습/실무에 대한 교육이 가능하다면,

Virtual Box, VMware 등의 가상화 기능을 통해 가상머신에 리눅스를 설치하고,

운영체제론에 나오는 각종 관리자의 관리기능(프로세스, 파일시스템, 네트워크, 사용자, 서비스, 백업 등등...)에 대한 기능을 해당 리눅스에서 실습하면 좋음.

실제로, 리눅스, IBM AIX, Oracle Solaris 운영체제의 사용자 메뉴얼을 보면, 운영체제론에서 나오는 내용을 IBM이나 Oracle의 운영체제 환경에 맞추어 설명하고 있음을 알 수 있음.

대학교에서는 대세인 리눅스 교육을 운영체제론에 나오는 순서에 맞추어 교육해준다면, 실무에서도 도움이 됨.

이론(컴퓨터구조론 -> 운영체제론 -> 컴퓨터 네트워크) --> 실무(리눅스, 가상화 소프트웨어, 클라우드 등)로의 확장이 필요함.

컴퓨터구조론에서 실제 현장에서 사용되는 DELL, IBM, Sun 같은 하드웨어의 깊이 있는 내용을 다루기에는 한계가 있으므로, 어쩔 수 없이 기업에 입사 후 현장에서 특정 하드웨어에 대한 교육이 되어야 함.

시스템 엔지니어로서, 그 다음으로 생각해야 하는 부분이 보안/미들웨어 부분임.

보안/미들웨어는 운영체제와 함께 시스템 소프트웨어에 대한 이해가 있어야 하는 부분임.

정보시스템 통합 구축을 제공하는 기업에서 일하는 엔지니어에게 시스템 엔지니어 소양, 주요업무에 대해서 문의해본 결과는 다음과 같음.

시스템 엔지니어(System Engineer)의 기본소양:

-. 운영체제, 특히 리눅스(Linux) 운영체제, 관리자(Administrator)의 관리 작업에 대한 이해

-. 서버(Server), 스토리지(Storage), 네트워크(Newtowkr), 보안(방화벽, 침입탐지시스템) 등의 HW 장비에 대한 이해

-. (프로그래밍 언어, 코딩, 자료구조 등에 대한 이해 보다는) 컴퓨터 구조에 대한 이해

-. 서버 가상화, 클라우드 컴퓨팅 등에 대한 이해

-. 백업/DR(Disaster Recovery)/BCP(Business Continuity Plan) 등에 대한 이해

* 전산관련학과 대학생들이 시스템 엔지니어(System Engineer)로 진로를 정하고 및 경력(career path)을 쌓고 싶다면, 기본 중의 기본은 운영체제, 특히 리눅스 운영체제와 Administrator의 관리 작업에 대한 이해 필요.

업무/직무:

주요 업무

-. 정보화 시스템 설치/구축

. Unix 서버/x86서버, 스토리지, 네트워크 장비 등을 현장에 설치, 서버 OS 설치, 초기 구성(계정, PW, IP주소 부여, 네트워크 연결, 배치 작업 설정 등등), 장비 간 연결(케이블링), 스토리지 디스크 볼륨 구성, 네트워크 이중화 구성, 네트워크 장비 초기 구성(계정, PW, IP주소 부여)

. 시스템 SW 설치 - OS(리눅스 RHEL(Red Hat Enterprise Linux), CentOS, Ubuntu, Rocky Linux(CentOS 종료 예정, CentOS 대체 개발 진행 중), WEB 서버(Apache, WAS서버, DB, SW개발 플랫폼 설치. CentOS stream

.. 상용: WEB 서버(Timax WEBTOB) Was 서버(Jeus), IBM WebLogic 등등. 오픈소스 시스템 SW로 이동 중.

.. 오픈소스: WEB 서버(Apache, 엔진X(NGINX)), WAS 서버(Tomcat, JBoss), DB(MySQL, MariaDB, Cubrid 등등), SW 개발 환경으로 JAVA, JRE, JDK 등등 설치(JAVA와 Oracle JDK 유료화 이후, Open JDK 설치). SW 개발 환경 혹은 SW 개발 플랫폼은 SW 개발업체에서 요청하는 시스템 SW 중심으로 설치 지원 혹은 SW 개발업체에서 직접 설치.

-. 운영 및 유지관리

. 점검:정기점검, 수시점검. 육안점검, 스크립트 혹은 수동으로 점검 명령어 수행 및 결과 확인.

. 작업:

SW작업:고객이 직접 수행하기 어려운, 전문 SW 사용한 설치, 구성 작업.

. 스토리지 볼륨 구성(볼륨매니저 SW사용), 네트워크 이중화 구성 등등.

HW작업:디스크 교체, CPU/메모리 업그레이드 등. 종료기동 절차 준수.

. 장애처리: 장애 발생 시, 장애 유형 판단 후, SW적, HW적 장애 처리. 장애 부품(파트)에 대한 교체.

. 백업/DR/BCP: 백업 솔루션으로 백업 정책 수립, 백업 수행 스케쥴링, 재난 발생 시 백업에서 복구 수행. OS에 대한 이해가 있어야 백업 작업 가능.

. 정보시스템 보안 취약점 분석. 주요 정보통신 기반시설은 연간 1회 보안 취약점 분석 작업수행. 스크립트 혹은 수동으로 점검 명령어 수행 및 결과 분석, 보고, 조치 수행.

향후 업무 발전 방향.

레거시 시스템과 베어 메탈 서버(단독 서버)에서

서버 가상화, 클라우드 컴퓨팅으로 컴퓨팅 환경이 변해 가고 있으므로, 서버 가상화, 클라우드 컴퓨팅 시스템에 대한 운영 및 유지관리가 점점 더 늘어나는 추세이므로,

. 대학교의 운영체제 혹은 컴퓨터 구조 과목에서 혹은 별도 과목으로, 서버 가상화, 클라우드 컴퓨팅을 깊이 있고 자세하게 가르치기 어려우므로, 학교에서는 서버 가상화, 클라우드 컴퓨팅의 개념이라도 교육 받고 이해하고, 대신 리눅스 운영체제, 관리자 작업들, vi 에디터를 잘 알고 입사하면, 리눅스 운영체제에 대한 이해 위에서 서버 가상화, 클라우드 컴퓨팅은 기업에서 교육할 수 있음. 따라서, 리눅스 운영체제와 관리자 작업들에 대한 이해가 중요.