인프라 엔지니어 시스템 엔지니어 - inpeula enjinieo siseutem enjinieo

퇴사하면서 시스템엔지니어 로드맵을 정리하기로 생각했다. 사실 개발을 위한 로드맵은 정리가 많이 되어있으나 시스템엔지니어에 대한 소개는 찾을 수가 없어서 이번기회에 정리를 해본다.

📌 시스템엔지니어는 카멜레온이 되야한다!!

사실 시스템엔지니어로 근무를 하면서 정말 많은 것들을 배웠지만 결국 얻은 결론은 모든 내용을 기초까지는 고루고루 알아야 된다는 것이다. 예를 들면 이런 것이다.
"우리가 Windows Server Active Directory로 직원들 PC를 관리 중이에요.. 그래서 PC를 부팅 시 SSO를 통해서 자동 로그인이 되도록 해주세요.."
실제 내가 프로젝트를 진행하면서 고객에게 요청받은 내용이다. 더 많은 내용을 적고 싶으나 민감할 수 있는 부분이라서 중요하지 않은 요청을 예를 들어 적었다. 대부분의 정보처리기사를 따신 분들이라면 SSO (Single Sign On)의 개념에 대해서는 알고 있을 것이다. 그러나 Active Directory의 의미를 모르는 경우는 많을 것이다. 이처럼 시스템엔지니어는 카멜레온 같은 능력을 갖춰야 하는 경우가 많고 실제로 고객들도 엔지니어가 그 정도 능력은 될 것이라고 믿고 이야기하는 경우가 많다. 아마도 앞으로도 이러한 경향은 매해 더 높은 수준을 요구하게 될 것이다. 그럼 지금부터 예시로 떠드는 내용이 아닌 진짜로 로드맵을 한번 적어보겠다.

📌 시스템엔지니어 필수 공부

시스템엔지니어는 내가 생각하기에는 필수로 공부해야하는 과목이 있는거 같다. 실제로 업무에도 많이 사용되기도 하고 아마 시스템엔지니어로 근무를 하는게 아닌 클라우드를 기반으로 엔지니어를 하더라도 지금 소개하는 과목들은 영원히 변하지 않고 시스템엔지니어들에게는 지겨워도 봐야되는 내용일 것이다.

📋 필수과목

✔️ 인프라

  • 인프라에 대한 공부는 일을 하면서 더욱 더 중요한 부분이었다. 사실 나는 인프라에 대해서는 많이 부족한 편이었다.
  • 인프라에 대한 이해가 있어야 전체적인 업무의 흐름을 이해할 수 있기에 정말 중요하다.

✔️ 네트워크

  • 네트워크 엔지니어를 가려는 것이 아니면 너무 깊게 볼 필요가 없다.
  • CCNA정도는 덤프를 보지 않고 풀고 내용을 보고 토폴로지를 작성할 정도는 되야된다고 생각한다.
  • 실제로 프로젝트를 진행할 시 Dynamic Routing을 사용하는 경우는 많이 없다.
  • 인프라 부분은 가상환경에서 망을 구성하고 실제로 동작 부분을 확인하는 연습을 하는 것이 중요하다.
  • 나중에 이런 부분들은 업무를 하는데 큰 도움이 될 것이라고 생각한다.

✔️ 리눅스(Linux)

  • 리눅스는 정말 시스템엔지니어에게는 애증의 관계일 것이다.
  • 특히나 거의 모든 제품들이 리눅스를 기반으로 동작을 한다. 그렇기에 리눅스는 정말로 기본소양이라고 생각한다.
  • 아무리 많이 공부해도 지나치지 않다. 그리고 많이 공부를 해도 내용이 줄지 않는 것이 함정이다.
  • 이 부분은 나도 부족한 부분이지만 만약 준비하는 분들이 있다면 반드시 쉘스크립팅 공부는 하는 것이 필요하다고 하고 싶지만 필수이다.

✔️ 윈도우(Windows)

  • 윈도우는 요즘 추세에 비교하여 생각한다면 공부를 하지 않아도 된다고 생각할 수 있다. 그러나 윈도우는 대부분의 사람들이 사용하는 운영체제이기 때문에 반드시 기본은 공부해서 알고 있어야한다.
  • 리눅스에서 나오는 이슈보다 윈도우 PC에서 나오는 이슈가 더 많고 처리하기가 어려운 경우가 많다.
  • 시간이 난다면 윈도우서버에 대한 공부를 하는 것을 추천한다.
  • 자격증을 취득한다면 자격증을 공부하는 동기부여도 될 수 있을 것이라고 생각한다. (국제자격증 중 가격이 제일 저렴)

하나씩 필요한 공부나 부분에 대해서 적다보니 결국은 나에게 아쉬웠던 점과 부족했던 부분에 대한 성찰을 하던 시간이었던 것 같다. 그리고 다음부터는 "그래, 퇴사했어. 그래서 이제 머 할거임??" 이 부분에 대해서 하나씩 정리하여 적어보겠다.

인프라 엔지니어??

인프라 엔지니어라는 말은 IT업계에서 일하는 사람이라면 누구나 한번쯤 들어 봤을 것 입니다.

하지만 저와 같이 IT에 프로그래밍으로 입문한 허접한 뉴비들에겐 인프라 엔지니어 라는 말은 낮설기만한 직책이고, 과연 이사람들은 무엇을하고 있는가 궁금한게 많을 것 이라 생각합니다.

이번 포스팅에선 인프라 엔지니어란 어떤일을 하며, 인프라는 무엇으로 구성되있이며 관점에 따른 인프라 엔지니어에 대하여 정리 해볼까 합니다.

1. 인프라 엔지니어의 업무

인프라 엔지니어의 업무는 크게 '인프라 설계, 인프라 구축, 인프라 운영' 세 단계로 분류 가능하다

인프라 설계

- 인프라를 만들 때는 반드시 인프라를 만든 목적이 있으므로 우선, 그 목적을 잘 이해할 필요가 있다.

그런 다음 목적을 달성하는 데 필요한 기능이나 성능 등을 조건 을 기준으로 정리한다.

조건이 정리되면 그 조건에 맞는 적절한 기획서와 설계서를 작성해야 한다.

어떠한 인프라를, 어느 정도의 비용으로, 어느 정도의 기간 내에 만들 수 있는지 예상하는 작업이다.

인프라 구축

- 필요한 기능이나 소프트웨어 등을 발주해서 납품을 받으면 인프라 구축을 시작한다.

인프라 구축 작업은 인프라 엔지니어가 직접하는 경우도 있고, 오퍼레이터나 외부 업체에 맡길 때 도 있다.

인프라 구축 작업은 기기의 운반과 조립, 장착, 설치, 설정, 동작 테스트, 부하 테스트 등으로 분류할 수 있다.

인프라 운영

- 구축한 IT 인프라는 가동 후에도 계속해서 정상적으로 동작하도록 운영해야만 한다.

인프라는 24시간, 365일 내내 가동되어야 하기 때문에 직접 인프라를 운영하는 회사는 몇 개의 팀을 만들어 24시간, 365일 교대로 운영하는 것이 일반적이다.

인프라 운영은 주로 '장애 대응, 수용량 관리, 인프라가 원인이 아닌 문제의 파악' 으로 나눌 수 있다.

장애 대응

- 장애 대응에는 하드웨어 고장이나, 급격한 액세스 증가에 대한 대책부터 부적절한 권한 설정에 의해 액세스가 불가능한 상황의 해소 등이 있다.

수용량 관리

일단 구축한 인프라는 시간이 지나면서 액세스 수나 데이터 양 등이 늘기도 하고 줄기도 한다.

적당한 시기에 인프라의 수용력을 재검토해야 한다.

구체적으로는 인프라 전체의 수용량이 부족하면 인프라를 늘려야 하고, 반대로 너무 여유롭다면 인프라를 축소해서 규모를 적절하게 조정한다.

인프라가 원인이 아닌 문제의 파악

시스템에 문제가 발생한 경우 인프라가 원인일 때도 있지만 프로그램의 버그나 앤플리케이션 설정 실수 등 인프라가 원인이 아닐 때도 있다.

장애 원인이 인프라 인지 아닌지를 파악한 뒤 인프라가 원인이면 직업 대응하고, 인프라가 원인이 아니면 대응 가능한 부서에 대응 요청을 한다.

2. IT 인프라를 구성하는 요소

퍼실리티

facility 란 '건물, 시설, 설비' 등을 의미한다.

퍼실리티에는 데이터 센터와 데이터 센터를 구성하는 랙, 에어컨, 발전기, 변압기, 소화 설비 등이 포함된다.

서버, 스토리지

IT 서비스를 제공하는 서버와 데이터를 대량으로 저장하는 스토리지를 가리킨다.

네트워크

서버와 스토리지를 연결하고 인터넷에 접속하는 네트워크를 가리킨다.

3. 기술자 로서의 인프라 엔지니어

인프라 엔지니어는 우수한 기술자라야 한다,

우수한 기술자란 요청된 과제에 대해 기술적인 관점에서 적절한 답을 제안하고 실천할 수 있어야 하며, 어떤 문제가 발생 했을 때 단기간에 볼진적인 해결책을 제시할 수 있는 기술자를 말한다.

또한 인프라 엔지니어는 정확한 지식과 정보 수집력이 있어야 하고 최신 동향에도 정통할 필요 가 있다.

서버 하드웨어

서버 하드웨어는 주로 'IA 서버' 와 '엔터프라이즈 서버' 두 가지가 있다.

양 쪽 서머 모두 메인보드, CPU, 메모리, 디스크, NIC, PSU, 와 같은 주요 부속의 조합으로 구성된다

서버에서 이용되는 주요 부품은 해마다 다양화되어, 각 차이와 특성을 정확히 이해하기란 어렵다.

서버 운영체제

서버 운영체제는 거의 '리눅스, 윈도우, 유닉스' 세 가지로 집약된다.

시간을 들여 공부하면 각 운영체제의 개념이나 기능에 정통하는 것이 어려운 일은 아니지만,

이론과 실저은 다르다. 직장 환경에서 사용할 기회가 없는 운영체제는 경험을 쌓는다는 의미에서 불리한 것이 사실이다.

일반적인 조작은 이론으로도 통달할 수 있지만 장애 대응은 경험을 무시할 수 없다.

실전 경험이 없는 기술자가 장애에 대응한다는 것은 말하자면, 경험이 없는 전공의가 갑자기 수술하게 되는 상황과 같다.

결국 어떻게 실전 경험을 쌓느냐가 기술자의 성장에서 매우 중요하다.

스토리지

디스크의 대용량화, 플래시 디스크의 등ㅈ앙에 따른 고석화, 데이터의 폭발적 증가 등을 배경으로 스토리지 가상화, 씬 프로비저닝, 중복 제거, 스냅샷 등 신기술이 속속 등장하고 있다.

새로운 기술의 장단점을 신중하게 파악하고 비용대비 효과 측면에서 적절한 스토리지를 선정할 수 있는 능력이 필요한다.

네트워크 설계와 구축

네트워크의 흐름이란 눈에 보이지 않는 것이므로, 실제로 네트워크를 구축하고 제대로 동작하지 않았을 때 어디에 문제가 있는지 원인을 찾아내긴 어렵다.

따라서 네트워크를 구축할 때는 설계 단계부터 모든 각도에서 검토해 문제점을 해결 할 필요가 있다.

네트워크 장비

네트워크 장비의 주된 역할은 통신의 교환이다.

네트워크 장비에는 다양한 회사가 있고, 사용하는 명칭도 제각각 일 수도 있으나 기본적으로는 연결하는 서버 및 네트워크 장비의 수와 커넥터의 차이, 어느 정도의 통신량을 얼마나 빠르게 교환하고 싶은지, 그리고 라우터, L2, L3, L4, L7 스위치의 차이를 파악해 두면 네트워크 장비 선정에서 크게 실수할 일은 없다.

사용하는 업체만의 용어와 명령체계를 따로 학습 하는 것이 중요하다.

4. 선정자로서의 인프라 엔지니어

IT 인프라를 구축하기 위해서는 다양한 선택이 필요하다.

선택에는 다양한 선택지가 나오지만 대개 100% 정답인 선택지는 없으며, 프로젝트의 성질이나 기업문화 혹은 최종 결재궈자의 사고 방식 드엥 의해 정답이 달라지는 게 일반적이다.

인프라 엔지니어는 그런 점을 고려해 기술자로서 객곽적인 이유를 모아 최고의 선택으로 이끄는게 중요하다.

시스템 구성

프로젝트에 대해서 어떤 시스템을 어느 정도의 규모로 어떻게 구성할 것인지 검토한다.

서버 사양 선정

인프라 엔지니어는 구매하려고 하는 서버의 사양을 선정한다.

서버에는 선정해야할 사항이 많다.

CPU, 메모리, 디스크, RAID, NIC, PSU 의 이중화 필요성, 보수 연수, 보수 레벨, 확장성, 물리적 크기 및 중량 등이 있고, 이런 사양을 하나씩 결정해가는 것도 인프라 엔지니어의 중요한 역할이다.

네트워크 구성

- 랙에 몇개의 스위치를 설치할 것인가

- 각 스위치의 수용량은 어느 정도로 할 것인가?>

- 채택할 업체

- 보증 기간

- 네트워크 잉ㄴ터페이스별로 통신량을 정하고 이중화 여부를 결정

데이터베이스 설계

- RDBMS? NoSQL? 어떠한 db?

- 필요 용량 계산

- 데이터베이스 스키마와 물리적인 데이터 배치 결정

운영 시스템

시스템을 어떻게 감시하고 운영할 것인지 검토한다.

이상으로 인프라 엔지니어에 대해 간략히 정리해 보았습니다.

IT 업계에서 일하는 이상 본인이 어떠한 일을 하던지 인프라 엔지니어와 얽히게 되는 것은 필수 적인 요소 입니다.

저는 전문적인 인프라 엔지니어가 되고 싶은 마음은 없지만

그들이 적어도 어떤 일을 하고 있으며, 내가 하고자 하는 일에 어떤 영향을 미치고 있는지 알고 싶어서 공부를 하고 있습니다.

물론 제가 되고자 하는 풀스텍 엔지니어 로 가기 위해선 당연히 인프라에 대한 지식도 상당수준 가지고 있어야 합니다.

올해도 열심히 공부하여 조금이 나마 제 꿈에 조금더 다가 갈 수 있도록 노력 해야겠네요...ㅎ