소프트웨어 엔지니어(Splunk) 인턴 후기

Bumgu·2024년 1월 8일
0

23년 8월 부터 10월까지 총 3개월(8,9,10)기간의 인턴 후기입니다.


학원 수료를 하고 면접을 보고 다니던 중 한 곳에 합격 통보를 받게 되었다.
언주역 부근에 위치한 회사였고, 주 업무는 Splunk (빅데이터 플랫폼) 구축, 유지보수 하는 직무였다. Splunk는 데이터 수집, 가공, 정제가 가능하고 시각화와 모니터링을 구현 할 수 있는 플랫폼이다.

1. 면접

면접은 2대2로 진행되었다. 간단한 질문으로 시작해서 Splunk에 대해 아는지 질문이 나왔다.
면접 보기전에 회사 홈페이지에서 Splunk를 사용한 보안 솔루션을 제공한다는 점을 알고 미리 Splunk에 대해 알아봐서 질문에 대답할 수 있었다, 개발 공부를 하다가 보안 솔루션 회사에 면접을 봤기에 큰 기술적 질문은 없었다. Splunk의 검색언어인 SPL(Search Processing Language)가 SQL문법과 비슷한 부분이 있기때문에 SQL을 할 줄 아냐는 질문이 있었고, 학원에서 배웠기에 할 줄 안다고 답했다. 다행히 MacOS,리눅스 와 CLI환경에 익숙하다는 점이 면접관 분들에게 좋은 인상을 남긴것 같다

2. OJT

8월1일 부터 출근을 했고, 첫날은 자리를 배정받고, 회사 AD계정을 생성하고, 컴퓨터(미니맥)을 자리에 설치, 기본 설정을 했다.
회사 서버도 맥으로 구축되어있었고, 기본 환경도 맥, 리눅스 환경이었기에 원래 MacOS를 사용하던 나에게는 큰 어려운점으로 다가오진 않았다.
이후, 인턴동기와 함께 선배분에게 Splunk에 대해 자세히 배웠다.
회사 VSphere에 8개의 리눅스서버를 생성하고
마스터(1) 서치헤드(3) 인덱서(3) 포워더(1) 로 구축했다.
각 서버의 역할은,

  • 마스터 : 모든 서버를 통합관리 하는 서버이다. 각 서버들의 통신상태와 데이터 소화량, 역할 설정등을 할 수 있다.
  • 서치헤드 : 이름부터 알 수 있듯 인덱싱된 데이터를 토대로 검색을 수행하는 서버이다.
  • 인덱서 : 포워더에서 수집되고 보내진 데이터를 인덱싱해 저장한다.
  • 포워더 : 데이터를 원격지(클라이언트)로부터 수집하고 인덱서로 데이터를 forwarding한다.

Splunk에서 제공하는 Search Party WorkShop이라는 앱을 설치해 설명을 읽으며 단계적으로 문제를 함께 풀어보는 식으로 진행되었으며, Splunk에 대한 이해와 문법을 배울 수 있었다.

-느낀점

  • 보안은 IT에 대해 전반적으로 다 알아야한다.
    자바로 백엔드를 다루었지만 네트워크에 대한 공부가 부족했는데 OJT기간 동안 많은 것을 배울 수 있었다.
  • Cluster의 개념을 깨우쳤다.
    자바와 JSP로 풀스택 웹을 제작 해보았지만 배워보지 못한 영역이었다. Server Clustering과 LB(Load Balancer), HA(High Availability, 고가용성) 등등 IT전반에 걸친 지식을 배울 수 있었다.

3. 과제

2주가 지나고 Splunk에대한 이해도가 어느정도 생긴 후, 수석님께서 (회사에선 모두 수석이란 직급이었다.) 슬랙 인턴채널에 대쉬보드 사진을 한장 보내주며 '최대한 비슷하게 만들어보세요' 라며 이틀의 시간을 주었다. 2주간 연습용 데이터와 간단한 검색밖에 못해봤는데 실제로 발생하는 회사 VPN 로그에 복합적인 조건을 건 검색을 해볼 수 있는 기회가 주어졌다. 처음 주어지는 과제고 실제 로그로 실습해볼 수 있는 기회였기에 나름 신나서 열심히 한 것 같다.그떄 obsidian에 적어놨던 SPL
이러한 검색 하나하나가 대쉬보드의 한 조각을 담당한다. 다행히 기한안에 완성 할 수 있었고 정규식과 eval(변수를 생성하는 Splunk의 함수)함수에 대해 이해 할 수 있었고, 그간 이해가 잘 가지 않았던 통계함수에 대해 이해하게 되었다.
이후 IT보안 용어와 솔루션들을 정리해 발표했다. CIM, DLP, SIEM, NAC 등등 딱 보안용어다! 라기보단 IT전반에 걸친 용어들이었다.

-느낀점

  • SQL, SPL 과 같은 high-level Language는 생각보다 어렵다.
    조건을 추가하느라 여러 조합을 하다보면 금새 눈처럼 불어난 input창을 볼 수 있다.
  • 데이터의 시각화는 강력하다.
    SPL로 검색해 테이블을 보는 것이 아닌 검색쿼리를 대쉬보드에 저장해 놓고 Visualizer(표, 파이차트, 그래프) 등으로 정리해놓으면 훨씬 편리하게 필요한 정보를 얻을 수 있다.
  • 보안용어에 대해 배울 수 있었다.
    DLP(Data Loss Prevention), NAC(Network Access Control) 등 대략은 알고 있었지만 몰랐던 용어에 대해 정리하며 습득할 수 있는 시간이었고, 특히 CIM(Common Information Model)에 대해 알게 되며 로그 파싱 하는 연습을 할 때 CIM을 지킨 로그 생성기를 직접 코딩해 SIEM(Security Information and Event Management)을 해 볼 수 있었다. 내가 만든 로그제너레이터

4. 프로젝트 참여

회사 선배 수석님 3분이 나가있는 프로젝트가 있었다. 인턴들에게 주어진 과제는 이 프로젝트에 일주일씩 돌아가며 지원을 나가 실제 데이터를 만져보고 배워보는 것이었다.
나는 중간에 예비군 훈련이 있어서 제일 마지막 순서가 됐고 월요일에는 회사가 아닌 파견지로 출근 하게 되었다.
프로젝트는 기존 DB로 저장되어있는 데이터를 Splunk로 이전하고, 새로 수집될 데이터를 Splunk로 수집하는 것이었다.


첫날에는 이 프로젝트에 대해 설명을 듣고 내가 하게될 업무에 대해 듣게 되었다. 내가 할 업무는 선배 수석님이 부탁하는 여러가지(?)업무 (주로 대쉬보드 수정 이나 엑셀 데이터 수정 등) 과 데이터 전처리가 주 업무였다 수집된 데이터로 실제 검색을 하기전 인덱싱, 정규식이나 구분자를 이용한 필드 파싱 혹은 계산된 필드를 이용해 이전 DB와 Splunk의 필드(DB:컬럼)명을 맞추는 작업이었다.
파견간 회사가 가진 계열사가 14개라서 그 모든 계열사의 이전 DB의 테이블명을 Splunk의 Source type명과 맞춰주는데 총 14개를 해야했기에 시간이 상당히 많이 걸렸다. 완료하면 엑셀파일에 업데이트하고 사수에게 보고하는 식으로 업무가 진행되었다.
예정된 일자보다 딜레이된 프로젝트였기에 인원 모두 야근을 했고 정말 많은 데이터를 이전하고 정리해야 했기에 매일 오후 9시~10시 까지 근무했고 일요일도 출근했다.
이후에는 파견지의 관계자분에게 보여드릴 보고서와 PPT파일을 수정하고, 정리했다.

-느낀점

  • 실무는 다르다!
    그동안 공부하고 실습해보며 유용하겠다 싶은 함수들보다 실제로 사용되는 함수들은 달랐다.
  • 로그는 상당히 많은부분에서 자세하게 기록된다.
    실제 로그들을 보기 전까지 이렇게 많은 내용이 로그로 기록될지는 몰랐다.
  • 엑셀과 파워포인트는 어디서나 사용된다.
    가장 쉽고 빠르게 정리된 내용을 보여줄 수 있는 업무 툴.

5. 시험

프로젝트 지원 이후 시험을 봤다.
미리 8개의 서버를 생성해 세팅해 놓으셨고 문제는,

  1. 각 8개 리눅스 서버 IP주소와 NetMask 설정
  2. 8개 리눅스 서버에 Splunk 설치
  3. 마스터(1), 서치헤드(3), 인덱서(3), 포워더(1) 역할 부여 및 클러스터링
  4. 지정된 포트번호로 데이터 수집
  5. 수집된 데이터 파싱

시간은 2시간이었고 그간 여러번 해본 작업이었기에 명령어도 헷갈리지 않고 마칠 수 있었다.

6. 인턴종료

3개월간의 인턴을 마치고 퇴사를 결정하게되었다. 퇴사를 하게된 결정적인 이유는 개발을 하고 싶어서였다. 좋은 회사이지만 Splunk를 주로 다루는 회사이고, 코드를 짜는 일은 전무하다 시피 해서 '나중에 후회 하더라도 한번 더 도전해보자' 라는 생각을 하게 되었다.

-느낀점

  • 커뮤니케이션은 중요하다
    개발을 하든지, 보안을 하든지, 혹은 다른 어떤일을 하더라도 혼자 일을 할 수는 없다. 일을 완료했다면 완료했다고 말하고, 피드백을 받고, 모르거나 궁금한 것이 있다면 물어보는 것이 당연하다. 간과하기 쉬운 부분 이었다.
  • IT의 세계는 넓다.
    개발공부를 하던 내게는 새로운 영역이었고 미약하게나마 보안, Cyber Security에 대한 지식과 네트워크에 대한 지식을 쌓을 수 있었다.
  • 짧지만 의미 있는 시간이었다.
    식상하지만 가장 잘 표현할 수 있는 말인것 같다. 퇴사의 아쉬움과 다시 취준생이 된다는 불안감과 막막함이 있지만 이번 인턴을 기회삼아 더 발전된 모습을 갖추고 싶다. 인턴기간 배웠던 지식들은 내게 양분이 되어 나를 더 나은 개발자가 되겠다.
profile
Software VS Me

0개의 댓글