Programming/기타

(기사스크랩) 개발자가 알아야 할 클라우드 프로그래밍 언어 11가지

armyost 2022. 6. 16. 13:49
728x90

출처 : https://www.kcloudnews.co.kr/news/articleView.html?idxno=11018 

 

개발자가 알아야 할 클라우드 프로그래밍 언어 11가지 - 한국클라우드신문

[한국클라우드신문=이수현 기자] 클라우드 컴퓨팅 프로그래밍은 다양한 형태를 취한다. 백엔드 개발자에게 이는 클라우드 네이티브 앱의 개발 또는 상호 연결된 마이크로서비스 세트의 지속적

www.kcloudnews.co.kr

 

 

[한국클라우드신문=이수현 기자] 클라우드 컴퓨팅 프로그래밍은 다양한 형태를 취한다. 백엔드 개발자에게 이는 클라우드 네이티브 앱의 개발 또는 상호 연결된 마이크로서비스 세트의 지속적 제공을 뜻할 수 있다. 관리자에게는 클라우드 기반 리소스를 자동으로 프로비저닝하는 스크립트 개발을 의미할 수 있다. 웹 개발자에겐 클라우드 호스팅 리소스를 사용하는 앵귤러 또는 리액트 앱의 개발을 의미할 수 있다.

당신의 요구 사항에 가장 적합한 클라우드 프로그래밍 언어를 선택하려면 아래 선택 기준을 신중하게 고려해야 한다. 그런 다음 일부 인기 있는 프로그래밍 언어와 사용 사례에 대한 세부 정보를 살펴보자.

 

◇언어 선택 기준

기업은 클라우드 프로그래밍 언어를 선택할 때 다음 4가지 요소를 고려해야 한다.

1. 클라우드 클라이언트 및 서비스

2. 대상 클라우드 스택 레이어

3. 친근성

4. 위험 회피

 

△클라우드 클라이언트 및 서비스

어떤 프로그래밍 언어가 적합한지 결정하는 첫 번째 단계는 생성할 클라이언트 유형과 액세스할 클라우드 기반 서비스 유형에 따라 달라진다.

예를 들어 IBM 왓슨의 머신 러닝 기능이 필요한 가상 현실 헤드셋은 알리바바의 오브젝트 스토리지 서비스에서 이미지를 가져오는 단순한 iOS앱과 언어 요구 사항이 다르다.

 

△대상 클라우드 스택 계층

또 다른 고려 사항은 다양한 작업을 잘 수행하는 범용 프로그래밍 언어 또는 특정 기술을 대상으로 하는 프로그래밍 언어가 필요한지다.

수석 클라우드 및 인프라 분석가 롭 스트레체이는 "응용 프로그램을 개발하는 데 적합한 언어를 선택하는 것은 스택의 어디에 구축하느냐에 달려 있다"고 말했다.

예를 들어 Node,js나 .NET은 개발자가 서비스형 인프라(IaaS)를 프로비저닝하고, 클라우드 네이티브 마이크로서비스를 개발하고, 아마존 웹 서비스(AWS)·마이크로소프트 애저·구글 클라우드 서비스에 액세스할 수 있도록 하는 다목적 플랫폼이다. 그러나 이런 언어를 사용해 대부분의 클라우드 인프라를 실행하는 리눅스 커널을 향상시킬 수는 없다. 또 Nods.js 또는 .NET를 사용해 도커나 쿠버네티스 런타임을 확장할 수도 없다. C와 Go만이 클라우드 스택의 해당 계층에 유효한 옵션이다.


(사진=픽사베이)
 

△친근성

IT 및 개발팀이 자신의 안전지대를 떠날 필요는 없다. 때로는 주어진 플랫폼이나 프레임워크에 대한 기존 지식을 활용하는 것이 좋다. 예를 들어 이미 강력한 자바 또는 .NET 기술을 보유하고 있다면 이것이 자바 또는 .NET를 선택해야 하는 강력한 이유가 된다.

또 특정 프로그래밍 언어에 대한 과대광고를 피해야 한다. 예를 들어 많은 개발자가 데이터 과학 및 인공지능(AI)을 위한 선호 언어로 파이선을 내세우지만, 필수 사항은 아니다. 구글 클라우드 오토 머신러닝 및 오라클 클라우드 인프라스트럭처 포어캐스팅과 같은 모든 클라우드 관리형 AI 및 머신러닝 서비스에는 다양한 언어가 지원된다.

데브옵스와 머신러닝을 전문으로 하는 IT 교육 공급 업체 웹 에이지 솔루션의 AWS 공인 강사인 마이클 포레스터는 "자바, 파이선, 자바스크립트 및 .NET은 모두 공통의 광범위한 표준을 지원하도록 발전했다"며 "자바로 시작했다면 계속 사용하고, 파이선으로 시작했다면 그대로 사용하라"고 말했다.

클라우드에서 AI 및 머신러닝으로 작업하기 위해 기존 자바 개발자 팀에게 파이선을 가르칠 필요가 없다. 당신이 가진 재능을 사용하라.

 

△위험 회피

마지막으로 조직은 위험을 회피하는 방안에 대해 생각해야 한다. 예를 들어 러스트는 개발자가 클라우드 스택의 거의 모든 계층에서 사용할 수 있는 프로그래밍 언어다. 그러나 러스트 포 리눅스 프로젝트는 아직 어떤 코드도 공식 커널 빌드에 통합하지 않았으며, 주요 클라우드 공급업체의 소프트웨어 개발 키트(SDK) 지원은 보편적이지 않다. 기업이 위험을 피하고 싶다면 더 확고한 언어를 선택하는 게 낫다.

 

◇클라우드 프로그래밍 언어의 기능 및 사용 사례

클라우드 컴퓨팅 프로그래밍 언어를 선택할 때 조직은 일반적으로 다음 11가지 옵션을 고려한다.

 

△자바스크립트

애저 블롭 스토리지 또는 아마존 코그니토를 통한 보안인 증과 같은 다양한 클라우드 서비스에 액세스해야 하는 HTTP 기반 클라이언트를 개발하려면 자바스크립트가 가장 좋다.

자바스크립트의 발전으로 많은 경우 RESTful 미들웨어 계층을 구현할 필요가 없어졌다. 여기서 애플리케이션 서버에서 실행되는 글루 코드는 클라이언트 계층에 백엔드 리소스에 대한 액세스를 제공한다. 자바스크립트는 관리형 클라우드 서비스와 직접 상호 작용할 수 있다.

많은 조직에서 클라이언트 측 자바스크립트가 필요한 언어 가운데 유일한 것일 수 있다. 모든 브라우저에서 지원하므로 개발자는 모든 랩톱, 휴대폰, 태블릿, 스마트 TV 또는 데스크톱에서 자바스크립트로 작성된 응용 프로그램을 렌더링할 수 있다. 리액트JS 및 앵귤러JS와 같은 웹 개발 프레임워크는 클라우드 기반 리소스와 비동기적으로 상호 작용하는 반응형 웹 애플리케이션의 개발을 단순화한다.

그러나 자바스크립트에는 보안과 같은 한계가 있다. 웹 브라우저의 기본 사용자 이름 및 암호 인증 메커니즘은 SSH (Secure Shell) 연결에 필요한 암호화 키 핸드셰이크만큼 신뢰할 수 없고 안전하지 않다.

대다수 조직은 프로그래밍 방식으로 클라우드 기반 인프라를 프로비저닝하기 위해 액세스 키 또는 SSH 연결이 필요하다. 클라이언트 측 자바스크립트는 클라우드 기반 리소스 소비에 적합하다. 자동화 및 리소스 프로비저닝을 위해서는 서버 측 언어가 필요하다.

 

◇Nods.js

개발자가 일반적으로 자바스크립트를 사용해 클라이언트에서 브라우저 기반 코드를 작성할 때 호스팅 코드를 작성하면 안 되는 이유는 뭘까. 이는 Node.js 프로젝트가 2009년 크롬 브라우저의 V8 자바스크립트 엔진을 서버로 이식할 때 해결하기로 결정한 수수께끼였다. Node.js와 Nods 패키지 관리자(npm)는 자바스크립트를 실행 가능한 클라우드 프로그래밍 언어로 바꿨다.

Node.js는 npm이 RESTful API 지원을 추가하는 간단한 메커니즘, 데이터 계층 리소스에 대한 커넥터 및 일반적으로 수행하는 작업 및 기능을 단순화하는 유틸리티 라이브러리를 제공해 마이크로서비스 개발·배포에 이상적이다.

Node.js를 사용하면 조직에서 클라이언트 측 및 서버 측 클라우드 작업을 하나의 우산 아래 통합할 수 있다. 또 Node.js 및 자바스크립트 지원은 여러 사용 사례에서 작동하는 단일 언어를 원하는 조직에 좋은 선택이다.

그러나 크롬 V8엔진과 같은 가상 머신에서 실행되는 코드는 Go, 러스트 또는 C와 같은 언어만큼 잘 수행되지 않는다. 모든 메가바이트 메모리가 중요한 상황에서 Node.js 애플리케이션에는 런타임 최적화가 부족하다.

 

◇파이선

파이선은 명령형 프로그래밍을 지원해 개발자들에게 인기가 있다. '함수형 프로그래밍'이라고도 하는 이 접근 방식으로 개발자는 복잡한 논리를 수행하는 간단하고 간결한 함수를 작성할 수 있다. 이런 기능적 방식은 자바와 같은 객체 지향 프로그래밍 언어와 관련된 형식 및 장황한 코드 없이 외부 시스템과도 상호 작용할 수 있다.

개발자는 파이선을 사용해 공급업체 SDK로 인프라를 프로비저닝하는 스크립트를 빠르게 작성할 수 있다. 주요 클라우드 공급업체는 파이선용 SDK를 제공한다. 클라우드 플랫폼이 새로운 기능을 출시하면 파이선 SDK가 업데이트 우선순위가 된다.

파이선은 데이터 과학자와 AI 개발팀이 가장 선호하는 언어이기도 하다. AWS AI 서비스 또는 구글의 머신러닝 도구를 사용하는 조직의 경우 파이선 기반 SDK를 사용해 클라우드 기반 서비스와 상호 작용하는 것이 좋다.

포레스터는 "파이선을 사용하면 내가 하고 싶은 데이터 과학 작업을 할 수 있다. 범용 언어이고 배우기 정말 쉽다"고 말했다. 다만 R 또는 줄리아와 같은 언어가 개발자에게 더 적합할 수 있다는 점도 잊지 않는다. 클라우드 공급자는 R 및 줄리아에 대한 SDK 지원을 보편적으로 제공하지 않는다.


(사진=픽사베이)
 

◇C

C는 빠르고 효율적이다. 자바와 같이 추상화 계층 언어를 통해 이동할 필요 없이 CPU 커널과 직접 인터페이스한다. 운영 체제, 하드웨어 드라이버, 하이퍼바이저, 비트코인을 채굴하는 GPU, 로드 밸런서 및 가상화 도구는 일반적으로 C및 C++로 작성된다. C는 최적화와 효율성이 최우선 순위일 때 선택된다.

모든 주요 클라우드 공급업체는 C에 대한 완전한 SDK 지원을 제공하지만, 클라우드 세계에서 C의 역할은 IaaS 및 서비스형 플랫폼(PaaS) API를 호출하는 기능을 훌쩍 뛰어넘는다. 개발자는 주로 C를 사용해 클라우드를 지원하는 배후 소프트웨어를 작성한다. 클라우드용 소프트웨어를 개발하고 싶다면 C는 개발자가 알아야 할 언어다.

 

◇Go

Go는 C와 유사한 구문을 가지고 있다. C와 마찬가지로 개발자가 서버의 CPU 또는 GPU와 직접 통신하는 추상화 없는 바이너리로 컴파일할 수 있다. 그러나 'GoLang'이라고도 하는 Go에는 자동 가비지 수집 및 메모리 보호와 같은 C에는 없는 추가 기능이 포함돼 있다.

포레스터는 "도커와 쿠버네티스는 Go로 작성됐으며, 이것만으로도 Go를 배워야 할 좋은 이유"라고 말했다.

Go는 테라폼을 만드는 데 사용되는 언어이기도 하다. 레드햇은 앵귤러JS와 함께 이를 사용해 오픈쉬프트 컨테이너 플랫폼을 구축했다. 테라폼과 같은 오픈 소스 프로젝트에 기여하거나, 오픈 시프트 컨테이너 플랫폼을 확장하거나, 소스 코드 수준에서 도커 및 쿠버네티스 구현을 사용자 지정하려는 모든 개발자는 Go를 알아야 한다.

그러나 Go는 오픈 소스 프로젝트만을 위한 것이 아니다.

스트레체이는 "GoLang은 오픈 소스 커뮤니티뿐만 아니라 대기업과 신생 기업에서도 공통적인 개발 언어다. 예를 들어 일부 AWS 서비스는 GoLang으로 작성됐다. GoLang은 개발자 친화적이며 매우 강력하고 성능이 우수하기 때문에 인기가 있다"고 말했다.

모든 주요 클라우드 공급업체는 IaaS API와 상호작용할 수 있는 Go SDK를 제공하므로 Go를 사용해 인프라를 프로비저닝하고, 클라우드 기반 관리 작업을 자동화할 수 있다. 또 개발자는 자바스크립트 변환 도구를 사용해 Go에서 브라우저 기반 응용 프로그램을 만들 수 있다.

 

◇자바

자바는 객체 지향이기 때문에 오랫동안 개발자들이 선호해왔다. 클라우드 네이티브 마이크로서비스를 만들기 위해 안정적이고 실용적인 언어다. 스프링 붓 및 이클립스 마이크로프로필과 같은 자바 프레임워크는 클라우드 네이티브 앱 개발을 표준화하고 단순화했다.

자바는 레거시 데이터베이스, 메일 서버, 문서 저장소 또는 파일 시스템 드라이버와 같은 모든 서버 측 기술에 대해 커넥터와 드라이버가 존재할 정도로 오랫동안 활발하게 개발됐다. 따라서 자바는 엔터프라이즈 아키텍처의 서로 다른 부분을 결합할 수 있는 응용 프로그램을 만드는 데 이상적 선택이다.

많은 조직에 이미 재능있는 자바 개발자 풀이 있다. 주요 클라우드 공급업체가 제공하는 자바 SDK를 사용하면 자동화 스크립트 또는 지속적 배포 파이프라인에서 구글 클라우드 또는 AWS API를 사용하려는 경우 직원이 새로운 언어를 배우도록 할 필요가 없다.

 

◇.NET

마이크로소프트의 .NET 플랫폼은 20년 넘게 자바 플랫폼과 경쟁해왔다. 클라우드 측면에서 .NET 프레임워크는 자바 플랫폼과 같은 역할을 수행하지만, 주요 차이점은 대상 사용자가 마이크로소프트 개발자라는 점이다. .NET은 마이크로소프트의 자체 개발 플랫폼이므로 기본적으로 .NET을 지원하는 마이크로소프트의 클라우드 서비스가 100개 이상 존재한다.

자바와 마찬가지로 .NET은 모든 유형의 백엔드 리소스에 대한 커넥터가 있는 잘 입증된 중간 계층 프레임워크다. 따라서 조직 인프라의 다양한 부분을 결합하는 마이크로서비스 및 RESTful API 개발에 탁월한 선택이다. 자바 플랫폼이 코틀린, 스칼라, 그루비를 포함한 많은 대체 언어를 지원하는 것과 같은 방식으로 .NET 프레임워크는 C#, VB.NET, C++, F#을 비롯한 여러 언어도 지원한다.

전반적으로 IaaS 공급업체는 통합을 위한 .NET SDK를 제공한다. 이미 .NET을 사용하는 조직의 경우 클라우드에서 .NET을 계속 사용하는 것이 좋다.

 

◇코틀린

대다수 휴대용 장치는 안드로이드를 실행한다. 클라우드 기반 리소스와 통합되는 안드로이드 앱 개발에 관심이 있는 개발자에게 코틀린은 좋은 선택이다.

주요 클라우드 공급업체 가운데 누구도 코틀린 전용 SDK를 만들지 않는다. 그러나 자바 버추얼 머신에서 실행되며 모든 자바 SDK API에 액세스할 수 있다. 코틀린으로 안드로이드 앱을 만드는 조직은 같은 개발 기술을 사용해 클라우드 기반 리소스를 프로그래밍 방식으로 관리할 수 있다.

 

◇스위프트

코틀린이 안드로이드 개발을 위한 것처럼 스위프트는 iOS 개발을 위한 언어다. 모든 공급업체가 스위프트 SDK를 제공하는 것은 아니다. IBM 왓슨은 iOS 개발자를 위한 스위프트 SDK를 제공하고, AWS는 2021년 8월에 스위프트 SDK의 알파 릴리스를 했다.

스위프트 SDK가 존재하지 않는 플랫폼의 경우 개발자는 클라우드 기반 리소스에 대한 액세스를 제공하는 RESTful API를 호출하거나, 파이선 또는 노드와 같이 지원되는 SDK에서 자체 코드를 작성하고 스위프트 앱이 해당 루틴을 직접 호출하도록 한다.

 

◇유니티

유니티는 머신러닝 및 시각적 인식 기술을 사용해 메타버스에서 게임 플레이를 실제와 같이 만드는 VR 애플리케이션 개발에 가장 적합하다. 플랫폼인 유니티는 C#, 유니티 스크립트 및 부를 비롯한 여러 언어를 지원한다.

IBM은 왓슨용 유니티 플랫폼 전용 SDK를 보유한 유일한 클라우드 공급업체다. 그러나 앞으로 가상 현실(VR), AI, 머신러닝 및 클라우드의 컴퓨팅 처리 능력을 단일 오퍼링으로 연결하는 더 많은 파트너십을 기대할 수 있다.

 

◇러스트

C는 OS 프로젝트가 시작된 이후로 리눅스의 핵심 프로그래밍 언어였다. 그러나 커널 개발 커뮤니티의 많은 사람은 이제 새로운 것인 러스트가 필요할 때라고 생각한다.

러스트는 C의 성능과 효율성에 필적할 수 있는 프로그래밍 언어다. 특수 언어 구조는 메모리 관리와 관련된 버그가 발생할 가능성을 줄여준다. 이는 목표가 OS를 안전하게 향상시키는 것이라면 큰 장점이다.

스트레체이는 "러스트는 실행 속도가 유연성이나 사용 편의성보다 우선시되는 저수준 개발에서 널리 사용되는 경향이 있다"고 말했다.

아마존, 마이크로소프트, 드롭박스, 디스코드는 모두 러스트를 실험했다. 구글은 러스트의 안드로이드 이식을 수행했고, 아마존은 2021년 12월 AWS 러스트 SDK 미리보기를 출시했다. 다른 공급업체는 아직 이를 따르지 않았지만, 공급업체가 부족한 부분에서 오픈 소스 프로젝트가 여유를 얻었다. 다른 언어에 대한 전문 지식을 갖춘 성숙한 조직에는 최선의 선택이 아닐 수 있지만, 러스트에 대한 수요는 꾸준히 늘고 있다. 

출처 : 한국클라우드신문(https://www.kcloudnews.co.kr)