본문 바로가기
대문글

안녕하세요! 기본기무새 Engineer입니다

by TayLee 2024. 5. 1.
반응형

안녕하세요, 블로그를 만들어놓고 이제야 Opening글을 쓰게되었습니다.

 

첫 오프닝글은 저에 대한 소개글을 적어볼려고 합니다.

 

저는 현재 IT회사에서 개발 및 서버구성 (클라우드, On-premise 환경)관련 업무를 맡고 있습니다.

 

처음부터 IT관련 업을 한 것은 아닙니다. 저의 본 배경은 환경공학과 기계공학입니다.

 

 물론, 두 학문에 대해서도 환경공학이란? 기계공학이란?질의에 답할수 있을정도로 두 학문을 즐겼으며, 여전히 다른 누군가와 두 주제로 대화하는 것을 좋아합니다.

 

 그럼에도 불구하고, IT관련하여 컴퓨터와의 인연이 시작된 계기는 석사과정동안 '강화학습을 통한 난류를 제어'라는 주제로 연구를 하며 코딩과 친해지면서입니다. 이에 따라 자연스럽게 AI와 기계사이의 징검다리 역할을 원하게 되었습니다. (링크는 출간된 논문입니다)

 

 이렇게 AI관련 일을 찾다가 우연히 IT업계에 들어왔습니다만, AI관련 업무는 하지 않고 순수 IT업을 맡게 되었습니다. 이때부터가 저의 IT 커리어의 시작입니다.

 

 처음에 IT회사에 들어왔는데 컴퓨터의 기본기인 컴퓨터 구조나 OS가 어떻게 돌아가는지 네트워크의 원리가 무엇인지 조차 알지 못했습니다. 심지어  API가 뭔지 JSON이 뭔지, 데이터베이스 CRUD의 의미조차 알지 못했습니다. 회사에서는 Java를 쓴다는데 전 Java를 써본적 조차 없었습니다. (주변 동기가 어떻게 이 회사 들어왔냐고 물어볼 정도였죠...;;)

 

아직도 그 당시에 너무나도 난감하고 막막했던 질문들이 머릿속에 남아 있습니다. 

1. 서버를 띄운다
    (서버를 띄우는게 뭐지 어떤 행동을 의미하는걸까..?)

2. API를 쏜다
    (API를 알지도 못하는데 API를 쏘는건 뭐야?)

3. 미들웨어
    (잉? 뭐야 하드웨어 소프트웨어 미들웨어?? 그럼 하드웨어랑 소프트웨어 사이에 뭔가 있는건가?)

이거 말고도 새로운 고유명사(톰캣, Nginx, DevOps 등)를 마주칠때마다 심장이 답답해지며 어지러웠던 기억이 있습니다.

 

 항상 기본기를 중요시하고 원초적으로 생각하며, 원초적인 질문을 통해 원리를 이해하려고 하는 저로서는 위의 추상적인 말들이 너무나도 괴로웠습니다.

 

 처음에 시간이 오래걸릴지라도 컴퓨터 사이언스관련 전공지식을 익히는게 기본기를 닦는 가장 빠른길이라 생각하여 공부를 시작했습니다. 하지만, 거의 무에서 시작해서 전공책을 읽는 것조차 불가능했습니다. 그러다보니 업무는 업무대로 쌓이고 퇴근 이후에 집에와서는 전공 공부하랴 업무 관련 프레임워크 공부하랴 근데 이해는 안가고...;; 

 가장 답답했던 부분은 전공공부를 했는데 지금 내가 개발하고 있는 무언가와 개념적으로 매핑이 안되는 것이 가장 답답하고 힘들었던 부분이었던 거 같습니다. 예를 들어 스프링부트를 IDE에서 실행버튼 누르는 행위가 Process를 띄우는 행위라는 것을 알게 된게 한 10개월정도 지나서였던거 같습니다. OS공부한 개념과 현업에서 하고 있는 행위에 대해 매핑이 좀 오래걸렸습니다. 

 

 그래서 이 블로그에서는 제가 IT를 익히기 위해 접근한 방식, IT를 좀 더 물리적으로 그리고 개념적으로 우리가 하고 있는 행위와 매핑하여 설명하는 글들을 적어볼까 합니다. IT외에도 환경, 기계관련 이슈들에 대해서도 다룰 예정입니다.

 

이제 마무리겸 위의 질문 3개에 대해서 저만의 답변을 달아볼까요?

1. 서버를 띄운다
   - 본질적으로, 한 컴퓨터의 OS상에 내가 올리고싶은 프로그램을 실행시킨 상태 (Process를 시작한 상태)
    *부연설명: 보통 네트워크 요청을 받아서 처리하는 프로그램을 실행시켜 놓는다. Nginx, 톰캣 등)
   
2. API를 쏜다
  - 본질적으로, 한 Process에서 다른 Process의 함수를 호출하는 행위.
  누군가가 만든 프로그램의 method또는 function을 사용하기 위해 해당 함수 로직에 필요한 인자들을 보내어 호출하는 것. 
  *부연설명: 보통 네트워크 통신으로 누군가 만든 함수를 호출하는 것을 일컫는다. Local에서 그냥 호출하는 것 또한 API호출이다
 
3. 미들웨어란?
  - 본질적으로, Application간에 데이터를 버퍼링 시키거나 통과시켜 전달하는 역할을 맡은 프로그램을 의미
 이 또한 Process로 실행되는 프로그램이다. 예를 들어 API-Gateway, DataBase 등 모두 이에 해당된다고 생각하면 된다.
  *부연설명: 물리적인 의미로 하드웨어 미들웨어 소프트웨어 계층이 있는게 아니다. 다만 소프트웨어 어플리케이션간의 데이터 징검다리 역할을 해준다하여 미들웨어라 칭한다.

 

 저는 위와같이 추상적인것보다 원론적이고 물리적인 설명을 좋아합니다. 이렇게 논리적인 개념보다 물리적인 개념 근본을 알게되면 개념 자체의 인터페이스가 변하지 않기때문에 이런 부분에서 자신감을 얻을수 있었던 거 같습니다.

 

 항상 기본기를 갈고 닦으며, 기본기의 관점으로 무언가를 설명할 수 있는 것을 좋아합니다

 

 

 

 이제 제가 회사에서 어떤 프로젝트와 어떤 역할을 맡았는지에 대해서 설명드리고 이번 오프닝 글은 마무리하고자 합니다.

아래는 제가 업무를 시작한 이후 두 회사에서 제가 개발에 참여했었던 프로젝트와 역할입니다.
  • 첫 회사에서 API Gateway 솔루션 개발을 약 2년동안 수행했습니다.
  • 두 번째회사에서도 제조 솔루션 관련 개발을 하게되었습니다.

 아무래도 두 회사 모두 솔루션팀에 있다보니, 프론트, 백엔드서버 개발부터 AWS와같은 Public Cloud환경에서의 서버구성(일부 TA역할)까지 다양하게 경험할 수 있었던 것이 좋았던 점이었습니다. 앞으로도 다양한 경험을 하고 그 경험을 쉽게 공유하고자 합니다.

 

  첫 글이다보니 좀 딱딱한 말투로 적었는데, 점 점 말투는 바뀔 예정이에요 :)

 

 


저의 Github과 제가 만든 Page를 공유해봐요!

 

https://taehyuklee.github.io/Archive/

 

TAYLEE's page

My vision Developing Technology to maintain Balance between the Natural environment and Human life.   1. Becoming a bridge between the physical and digital worlds   2. Developing sustainable technologies   3. Environmental & Mechanical Eng. with IT

taehyuklee.github.io

 

https://github.com/taehyuklee

 

taehyuklee - Overview

taehyuklee has 28 repositories available. Follow their code on GitHub.

github.com

 

반응형