날짜 250124 금
어제 한 일
- 클라우드 엔지니어 직무 탐색
- 클라우드와 데이터베이스 차이 이해
- 힙 자료구조 공부
인프라, 아키텍쳐, 프로토콜 이해

인프라
인프라는 시스템이 돌아가기 위한 환경을 말한다. 애플리케이션이 돌아가기 위해 필요한 외부적 요인으로 하드웨어, 네트워크, 운영체제 등이 포함된다. 클라우드에서는 IaaS 에서 인프라를 서비스로 제공한다.
이러한 인프라 위에서 돌아가는 시스템을 애플리케이션이라고 하고, 어디서 개발되는지에 따라 웹으로, 앱으로, 서버 어플리케이션 등등 그 용도에 맞게 불린다. 이것들을 총망라해서 소프트웨어라고 부른다. 클라우드에서 어떤 서버를 띄워달라고 할 때 띄워줄 수 있는 사람이 클라우드 엔지니어이다.
아키텍쳐
과거 백엔드 시스템은 하나의 시스템으로 개발되었는데(monolitic), MSA처럼 기능 별로 시스템을 쪼갤 수도 있다. 이를 어떻게 쪼개고 어떤 통신을 적용할 지(카프카, 메세지큐)를 구성을 결정하는 것이 아키텍쳐라고 한다.
가장 대표적인 아키텍쳐가 3-티어 아키텍쳐고 이는 WEB-WAS(Web Application Server)-DB 로 구성된다. 구조, 흐름 또한 아키텍쳐에 포함된다.
프로토콜
프로토콜은 통신 규약이다. 서버의 기능이 API 형태가 되면서, 클라이언트가 기능을 사용하기 위해 어플리케이션 간의 통신이 필요했다. 이 통신이 네트워크 위에서 이뤄지고 이때 프로토콜이 HTTP을 이용한다. 네트워크는 선로고, HTTP라는 프로토콜로 패킷의 송수신을 만들 수 있다.
HTTP 아래에는 네트워크 레이어의 프로토콜로 TCP/IP가 있다. TCP(전송제어프로토콜)/IP(인터넷프로토콜)에서 TCP는 패킷을 어떻게 주고 받을지에 대한 규약, IP는 서버의 주소를 찾아가기 위한 규약이다.
어떤 영역이던 전체의 영역을 알고, 자기 파트를 공부하는 것이 중요하다!
개발의 거의 전부

화면 구성(FE)
웹이나 앱 개발에는 화면이 필요하다. 사용자는 이 화면으로 서비스를 이용하고, 화면의 설계, 기획, 구성은 디자이너가 한다. 디자이너가 그린 화면의 요소를 배치하는 건 개발자의 영역이다. 웹에서는 HTML,CSS로 퍼블리싱을 한다. 화면 구성이 끝났다면 실제 기능을 개발해야 한다.
실제 기능을 구현할 때, 사용자의 입력을 기다리게 되고, 이를 이벤트라고 한다. 웹의 경우 클릭, 앱의 경우 터치가 된다. 이벤트에 따라 어떻게 동작할 지를 코드로 작성하는 것이 개발이 되고, 화면을 개발하면 프론트엔드 개발이 된다.
BE, 클라우드
데이터의 영역도 존재한다. 데이터를 내장 기기에 저장할 수 있는데, 이러면 내 데이터만 볼 수 있게 된다. 다른 사람들의 데이터도 보기 위해선 데이터를 저장해두는 서버가 필요하다. 데이터를 어떻게 쓰고 삭제하고 수정할 지를 결정하는 것이 백엔드 개발이 된다.
서버에는 특화된 영역에 따라 API 서버, DB 서버 등 종류가 다양하다. API 서버의 경우 사용자의 이벤트로 DB 서버의 특정 데이터와의 상호작용은 중개하는 서버라고 볼 수 있다. 반드시 API 서버를 만들어야 하는 건 아니다. 다른 사용자간의 데이터 조회가 필요하지 않은 계산기와 같이 간단한 프로그램이라면 서버 없이도 개발 가능하다. API 서버 외에도 Firebase와 같은 간단한 서버를 이용해도 된다.
요즘에는 API 서버, DB 서버까지 포함한 기능을 클라우드가 제공한다.
이런 개발의전체 영역에 대해 캡스톤을 시작하기 전에 알았더라면 훨씬 좋았을 것 같다! 개발을 시작하려는 사람이나 개발에 대해서 전반적으로 어디에 어떤 역할일 필요하고 어떤 프로세스로 개발이 이뤄지는지 단계별로 이해할 수 있는 좋은 영상이다.
SW 개발자 vs 엔지니어?

미래와 비전, 그리고 나의 상황에 따라 직무가 달라질 수 있다.
알고리즘을 어려워하거나, 화면 구성이 재미있어서 프론트엔드 개발을 시작하는 경우가 많다. 전문가가 되어서 프론트엔드만 가지고 구글에 입사하는 특이 케이스도 있지만, 실제 현업에서는 평범한 수준의 일을 하게 되는 경우도 많다. 이 때 단순한 업무만 하게 될수도 있는데, 그렇다고 기술적 난이도가 쉽냐하면 그건 또 아니다. HTML 하나로 홈페이지 뚝딱 못 만들고 기술적 깊이가 얕지는 않다. 이게 알고리즘적으로 복잡하거나 설계가 어렵다는 것과는 결이 다른 어려움이다. 화면을 만든다는 것 자체가 상당히 난해한 일이다. 프론트엔드에 정통한 사람이 되는 것이 즐겁고, 화면 다루는 게 즐겁다면 계속 하면 된다.
FE, BE 개발자와 엔지니어의 결은 또 다르다. 엔지니어는 시스템을 구축. 서버와 서버 간의 연결이나 환경을 구성한다. 요즘은 이걸 도커, 쿠버네티스로 하게 된다. 소프트웨어를 만드는 것보다는 시스템을 구축하는 일을 맡게 되며 코딩, 알고리즘적과 결이 다른 어려움이다. 대표적으로 클라우드 엔지니어가 java를 잘해야 되냐 하면 그게 아니라는 뜻. AWS, 리눅스를 능숙하게 다루는게 조금 더 중요하다.
그런데 클라우드도 요즘은 IaC가 되서 코드화 되고 있어서 코드를 아예 놓지는 않는다. 소프트웨어 개발자가 로직을 짜는 것보다 조금은 단순할 수 있지만 시스템적으로 어렵고 복잡할 수 있다.
깊이는 끝이 없다. 깊이가 얕은 이유는 얕은 업무를 해서. 자기가 결국 어떤 분야를 팔 지 잘 선택해야 한다. 그리고 클라우드가 점점 쉬워지면서 개발자의 영역이 점점 넓어지고 있다. 간단하게 클라우드 다룰 수 있는 정도는 이제 개발자도 한다는 것.
그렇다고 클라우드 엔지니어를 대체할 수는 없을 것이다. 프론트하다보면 백도 하게 되지만, 그렇다고 백엔드 개발을 전담할 수 없는 것처럼, 클라우드 전문가의 영역을 전부 다룰 수는 없을 것이다. 고민이 많으면 일단 자격증 하나 준비해보자. 자격증 공부 시작하면서 직접 보고 판단해야 한다. 천천히 공부하면서 내가 이걸 진짜 평생할 수 있는지, 내 것인지 아닌지 판단하고 신중하게 공부해야 한다.
'직무탐색 > 클라우드 엔지니어' 카테고리의 다른 글
[직무탐색] 클라우드 분야 진출 준비 (0) | 2025.01.24 |
---|---|
[직무탐색] 클라우드 엔지니어 로드맵 (0) | 2025.01.23 |