개발자가 클라우드를 공부하는 이유

endmoseung·2024년 6월 6일
87
post-thumbnail

이번에 AWS 자격증을 땄다.
내가 왜 클라우드를 공부하게 됐고, 클라우드를 알게되면서 내가 달라진점과 할 수 있게된것들에 대해서 공유하는 글이다.

1. 클라우드

우선 클라우드란 뭘까? 직역하면 Cloud는 구름인데 마치 하늘에 떠 있다고 생각하면 좋을 것 같다.
아래는 클라우드를 ChatGpt4o가 설명해준 글이다.

  • 클라우드는 인터넷을 통해 데이터 저장, 서버, 데이터베이스, 네트워크, 소프트웨어, 분석 및 인텔리전스와 같은 컴퓨팅 서비스를 제공하는 것입니다.
  • 이러한 서비스는 일반적으로 필요한 리소스만큼 비용을 지불(On Demand)하는 방식으로 제공됩니다.
  • 이를 통해 기업과 개인은 자체 데이터 센터를 구축하거나 유지 관리할 필요 없이 필요한 컴퓨팅 자원을 사용할 수 있습니다.

조금더 와닿게 설명하기 위해 AWS에서 설명하는 클라우드 컴퓨팅의 6가지 장점이다.

  • 고정 비용을 변동 비용으로 전환
  • 대규모 경제적 규모의 혜택 누리기
  • 용량 추정을 중지(거~~~의 무한대)
  • 속도와 민첩성 증가
  • 데이터 센터 운영 및 유지 보수 비용 절감
  • 몇 분 안에 글로벌로 확장

가령 우리가 클라우드가 있기 이전에 서비스를 띄워서 배포하려면 온프레미스(자체 배포환경 구축)로 인프라 구축을 위한 하드웨어들 + 그 하드웨어들을 비치할 공간들을 마련하고 공간을 유지하기 위한 냉각기기와 사람과 땅값이 필요하다. 즉 초기비용이 매우크다.
하지만 우리가 클라우드를 사용하면 필요한 리소스만큼 비용을 지불하고 쉽고 빠르게 장애가 나지 않도록 고가용성을 유지하며 배포할 수 있다.

더 자세한건 AWS에서 확인 바란다.

https://aws.amazon.com/ko/application-hosting/benefits/

2. 데브옵스

우리 회사에도 데브옵스 개발자님들이 계시며 데브옵스는 Dev + Operations 두 단어를 합친 합성어이다.
즉 개발과 운영을 같이할 수 있는 사람이란 뜻인데, 이 걸 나타낼 수 있는 용어가 CI/CD라고 생각한다.

그 회사가 얼마나 DX가 좋은지를 측정하는 요소중 하나가 CI/CD 및 배포 프로세스이다.
그래서 우리는 우리의 생산성을 증가시키기 위해(배포 시간을 단축시키는건 우리가 할 수 있는 일을 늘리는것이고 이는 효율성이다) 배포 과정을 단축화하고 코드로서(PAAS) 정리하여 유지보수 할 수 있다.

이 부분이 크게 와닿지 않아서 예시를 들자면,
내가 만약 네카라쿠배같은 큰 회사에 예를들어 1000명의 개발자가 있고 그 사람들의 1분을 단축시킨다면 해당 작업은 1000분을 단축시키는거고 개발자 연봉이 7천만원에 주 40시간 일한다라고 생각하면 회사에 3365만원을 벌어준 셈이다.(이 설명을 회사 데브옵스 개발자님이 설명해주셨는데 정말 와닿았다.)

이와 관련해 요즘 GitOps라는 직군을 채용공고에서 보는것도 흔한일이 아니다.

3. 최적화

요즘 회사 개발자 채용공고를 보면 최적화나 개발경험을 향상시킨 경험을 요구하는 걸 많이 볼 수 있다.
소스코드를 개발하는것과 마찬가지로 배포에도 정말 많은 리소스가 드는데, 스타트업의 개발자나 대기업의 개발자 모두 클라우드를 알아두면 최적화를 하여 개발 효율을 늘릴 수 있다고 생각한다.

필자는 대기업의 경험이 없어서 스타트업에서의 클라우드에 대해서 얘기해보려고 한다.
스타트업은 기회비용을 항상 생각해야한다. 돈과 시간이 상대적으로 많은 큰 회사가 아니라 제한적인 비용과 인원으로 시장에서 증명해내야 하기에 스타트업 직원은 한명한명 리소스가 중요하고 여러일을 하게 되는데 만약 클라우드에 대해서 지식을 알고 있어 우리의 리소스를 잘 활용할 수 있게 된다면 같은 비용으로 조금 더 많은 기회를 엿볼수 있을것이다.

가령 해당 서비스가 통하는지 확인하기 위해 빠르게 배포해야한다면 firebase나 AWS Amplify를 활용하여 초기 제품을 검증하는데 기여할 수 있고, 비용관점에서 고려해서 잘 쓰지 않거나 중단돼도 괜찮은 서비스는 스팟 인스턴스를 활용하여 가격을 아낄수 있다.
위의 예시는 클라우드를 활용해서 회사의 자원(기회비용)을 아낀 예시가 될 것 같다.

4. 그래서 내가 할 수 있게된 것

내가 클라우드를 공부하면서 달라진점은 아래와 같다.
1. 데브옵스 개발자님들과의 의사소통이 자유로워짐
2. 자연스럽게 내가 프론트엔드쪽 CI/CD 및 클라우드 담당하게 됨
3. 클라우드를 제대로 이해하고 난 후 개발을 바라보는 시야가 넓어짐

의사소통

회사에 와서 데브옵스 개발자님들과 소통하면서 제일 힘들었던건 하시는 말들을 알아듣기 힘들었다.
데브옵스 개발자님들과의 의사소통을 각색해보자면,

  • 아 이건 EKS에서 띄운 파드가 문제가 있네요.
  • 아 사실 그건 제가 방금 ECR에 Image 관련해서 문제가 있네요. Image를 Dokcer환경에서 다시 빌드할 수 있도록 Jenkins로 배포해주세요.
  • 아 해당건은 ELBNLB를 이용해서 헤더값에 지오정보를 추가할게요.

그럼 이 말을 처음 듣는 사람(1년전에 그랬다.) 그래서 나는 ELB가 뭐에요? NLB는 뭐고 OSI 4계층은 뭐에요?

하지만 클라우드를 공부고 난 후에는 대부분 이해하게 됐다.

그리고 가령 NextJS라는 서비스로 회사 서비스를 배포하는 상황을 예로 들어보겠다.
정상적으로 코드를 다 머지하고 기다리고 있는데 배포에 성공했는데 실제 환경에서 내 코드가 적용이 안됐다. 이 때 실제 서버에 띄워져있는 소스코드를 생각해보거나 배포과정에서 캐시서버에 캐싱이 초기화되지 않았거나 하는 등 데브옵스 개발자님과 협업해서 문제를 좀 더 빨리 같이 해결할 수 있게 됐다.
(같이 해결하는것이지 나 혼자 해결한것은 아니다.)

프론트엔드 CI/CD 담당

그럼 이제 클라우드를 배운 이후에 나는 적극적으로 회사 아키텍처 과정에 참여했다.
아래 작업도 내가 한 서비스를 담당해 아키텍처를 데브옵스 개발자님과 같이 해결한 과정을 다룬 글이다.

NextJS Middleware와 CDN으로 이런것도 가능해요.

시야가 넓어짐

그리고 과거에 스터디원중 한 분이 자사에 NextJS 서비스를 StandAlone방식으로 배포하면서 빌드시간을 단축하고 Image의 크기를 작게 하는 효과를 이뤘다고 하셨는데 이해하기 힘들었다.
하지만 클라우드를 공부하고 Docker를 학습하면서 해당 작업이 왜 도움이 되는지 알게 됐다.
가령 Docker로 빌드하면 Image가 생성되고 DockerHub나 AWS의 ECR같은곳에 Image를 저장하는데 Docker로 빌드하는 Image 크기가 증가하기에 추후 다른 환경에서 해당 Image로 빌드하는데 시간이 더 걸릴것이다.

그리고 한가지 더 예시를 들어보겠다.
우리가 서비스를 개발하다보면(특히 글로벌서비스에서) 로우네트워크인 환경에서 최적화된 이미지(AVIF나 WEBP 같은)를 제공해야한다.
클라우드를 알기전이라면 이를 어떻게든 해결하기위해서 이미지를 직접 변환해주는 웹팩관련 프론트엔드 라이브러리를 찾거나 웹 사이트를 찾을것이다.
하지만 클라우드를 알고나서 해당 문제를 바라보면 CI/CD과정에서 Lambda같은 ServerLess환경에서 이미지를 최적화해주는 라이브러리로 이미지를 최적화해서 데이터를 S3에 저장하면된다.(같은 가용영역간에 데이터 전송은 무료이다.)
심지어 ServerLess환경은 완벽한 OnDemand이다.
소스코드만 바라보던 내가 그 위에서 볼 수 있는 시야가 조금씩 넓어지고 있다고 생각한다.

확장성

그리고 클라우드 환경을 알게되면 새로운 서비스를 적극적으로 도입하기 좋다고 한다. 가령 요즘 장안의 화제인 오픈 AI를 이용해 서비스를 출시해야한다면 이또한 클라우드 환경을 이용하는것이 유리할 수 있다.
하지만 이부분에 대해서 내가 직접 해결해본 문제가 없어 이번 2024 AWS Summit의 클라우드를 이용한 해결 사례들 세션으로 대체하겠다.

해당 세션들을 보면 AI기술과 클라우드 리소스를 이용해서 사내의 데이터 문화를 만들거나 외부에서도 활약한 경험들이 많아 한번 확인해보는것도 추천한다.
https://aws.amazon.com/ko/events/summits/seoul/agenda/

5. Next Step

나는 클라우드를 비유할때 전기와 같이 비유한다. 필자가 전기과를 나왔고, 전기과는 취업이 잘 되는 과로 유명하다. 왜냐하면 전기는 안 쓰는곳이 없다.
그래서 나는 클라우드를 전기와 비유했는데 물론 온프레미스로 자사 인프라를 구축해서 배포하는 회사도 있겠지만 대부분의 회사와 대부분의 서비스는 AWS, Azure, GCP, NaverCloud 등 클라우드 환경에서 서비스를 배포하기에 소프트웨어를 다루는 IT와 클라우드는 땔래야 땔 수 없는 사이이다.

여담으로 요즘 인터넷에 전기(전력)을 해결하는 것이 앞으로 AI시대에서의 큰 문제라고 한다.
“AI 발전 걸림돌은 전기 부족”… 전력망 확충 전세계 비상

다음 목표

다음 목표는 DVA(Develop)이다.
DVA를 따냐면 나는 내 제품에 대해서 책임감이 있는 편이다.
내 서비스는 내가 다 다룰줄 알아야된다고 생각하고 그 서비스가 유지보수 되면서 불편하거나 개선해야할점은 개선하지 않고는 못 베긴다. (가령 빌드시간 단축, 자동화 등)
이것들을 더 잘 하기 위해서는 클라우드를 배우지 않고서는 불가능하다고 생각한다. 그래서 나는 내가 해야하는일과 좋아하는것을 책임지고자 내가 해야만한다고 생각하는 클라우드를 더 공부할 예정이고 생각보다 재밌는것 같다.
그래서 SAA도 한번 도전해보고 싶다.

Shout out to 재찬님

끝으로 클라우드를 써본적도 없고 네트워크의 N자도 모르는 클린이인 내가 하는 질문들을 모두 진심으로 알려주고 공유하고 여러 도움을 주신 아시아에 9명 있는 AWS Builder이시자 저희 회사 데브옵스 개발자 이재찬님에게 감사하다는 말을 드리고 싶다.

profile
Walk with me

5개의 댓글

comment-user-thumbnail
2024년 6월 11일

잘 읽었습니다!
읽다가 "저자하는데" 오타를 하나 발견했어요!

1개의 답글
comment-user-thumbnail
2024년 6월 15일

Your Content is very insightful. Developers study cloud computing because it's become essential for modern software development. The cloud offers benefits like scalability, cost-efficiency, and access to powerful tools and resources. This allows developers to focus on building applications instead of managing servers.
To Learn Deep Dive into Cloud Computing Checkout our Cloud Computing Course: https://bostoninstituteofanalytics.org/cloud-computing-and-devops/

답글 달기