Wyrzucam moje IDE i testuję nową usługę AWS Cloud9!

Voiced by Amazon Polly

Witaj!

Dziś wziąłem pod lupę nową, ogłoszoną na ostatnim re:Invencie, usługę AWS służącą do wytwarzania oprogramowania – Cloud9. Postanowiłem trochę się nią pobawić i zobaczyć jakie ma możliwości. Nie jest to pierwsze narzędzie na rynku, które jest swoistym edytorem kodu w przeglądarce, ale jako że jestem zawodowo związany z AWSem, postanowiłem sprawdzić właśnie to.

Czy wyrzucę swoje IDE i przeniosę się do pisania kodu w chmurze? 🙂 O tym napiszę na końcu, w podsumowaniu tego posta, a tymczasem zapraszam na test AWS Cloud9.

Czym jest Cloud9?

Jest to nowa usługa chmury Amazona, która dostarcza nam zintegrowane środowisko developerskie (IDE). Innymi słowy, z użyciem Cloud9 jesteśmy w stanie pisać, uruchamiać i debugować stworzony kod. A to wszystko z poziomy naszej przeglądarki internetowej. Usługa jest oparta na edytorze Ace oraz na wykupionym jakiś czas temu przez Amazona c9.io.

Jakie języki programowania, aktualnie Cloud9 obsługuje? Są to: C++, C#, CoffeScript, CSS, Dart. Go, Haskell, HTML, Java, JavaScript, PHP, Python, Ruby i Shell, choć każdy jest wspierany na innym poziomie. Tzn. dla każdego z nich IDE zapewnia podświetlanie składni, natomiast podpowiadanie kodu czy możliwość debugowania jest już tylko dla niektórych.

Jak to działa i ile to kosztuje?

W momencie utworzenia nowego środowiska Cloud9, AWS uruchamia nam nową instancję EC2, na której to środowisko będzie hostowane oraz dysk EBS z danymi. Mamy oczywiście możliwość wyboru parametrów naszej maszyny. Dzięki takiemu rozwiązaniu nie ma dodatkowych kosztów za używanie Cloud9, poza standardowymi opłatami za instancję EC2. (W ramach free tier możemy uruchomić sobie t2.micro. 🙂 )

Przydatną opcją zapewnianą w Cloud9 jest automatyczne wyłączenia maszyny w momencie, w którym nie używamy IDE przez ponad 30 minut (czas ten można zmieniać).

Możemy również podpiąć Cloud9 pod nasz serwer poza środowiskiem AWS. Wtedy za samą usługę nie płacimy nic.

Co ta usługa w ogóle potrafi?

Jak już wspominałem, Cloud9 jest całym IDE, czyli składa się zarówno z edytora kodu jak i środowiska, na którym możemy pracować – debugować i uruchamiać nasze programy. Zacznijmy zatem od edytora.

Wygląd

Cloud9 jest oparte na edytorze Ace. Mamy więc dość standardowy podział ekranu na:

  • eksplorator plików w panelu po lewej
  • edytor kodu z obsługą plików zakładkach w środku. Możemy dzielić go na więcej zarówno horyzontalnie jak i wertykalnie
  • różne opcje w panelach po prawej
  • unixową konsolę u dołu

Do wyboru mamy dwa główne motywy całego środowiska. Jasny:

oraz ciemny (czarny lub szary):

Możemy też zmienić motyw samego edytora kodu. Do wyboru jest kilkadziesiąt możliwości.

Ponadto, Cloud9 oferuję całą gamę ustawień standardowych dla każdego IDE. Od stylu kodowania począwszy, a skończywszy na ustawieniu wielkości czcionki. Możliwości „customizacji” są duże.

Skróty klawiszowe

Pomimo faktu, iż Cloud9 jest dostępny przez przeglądarkę internetową. w pełni obsługuje skróty klawiszowe. Poza trybem domyślnym, możemy też ustawić tryb VIMa, Emacsa i Sublime’a. Niestety nie ma gotowych ustawień zgodnych z popularnymi IDE (Eclipse, IntelliJ, VisualStudio), ale na szczęści możemy dowolnie zedytować sobie plik „keymap” z ustawieniami skrótów.

Edycja kodu

Kod pisze się zupełnie tak samo jak w każdym innym edytorze. Co ważne, dla każdego z obsługiwanych języków, Cloud9 potrafi podpowiadać składnię. Niestety bardziej zaawansowane rzeczy nie są już zawsze obsługiwane. Przykładowo, w kodzie napisanym w JavaScripcie edytor na bieżąco podkreślał potencjalne problemy i błędy w składni. Natomiast w Pythonie już ta opcja nie była dostępna – żadnych „warningów” czy „errorów”.

Analogicznie wygląda sytuacja z uruchamianiem i debugowaniem kodu. Możliwości Cloud9 mocno zależą od języka. Szczegółowa tabelka z informacjami o wsparciu poszczególnych języków programowania znajduje się tutaj: https://docs.aws.amazon.com/cloud9/latest/user-guide/language-support.html

Terminal i REPL

Przejdźmy teraz do kwestii bardziej związanych ze środowiskiem uruchamiana naszych programów. U dołu ekranu mamy dostępny unixowy terminal z zalogowanym użytkownikiem z prawami sudo. Wszystko co wykonujemy na tym terminalu jest po prostu wykonywane na naszej instancji EC2. Co ważne, od razu mamy zainstalowany zestaw niezbędnych narzędzi takich jak git, AWS CLI, java, pip czy npm.

Nie ma więc problemów z zależnościami w kodzie. Odpowiedzialność za nie jest po naszej stronie. Jeżeli potrzebujemy jakiejś biblioteki czy framerork’a po prostu je sobie doinstalowujemy – tak samo jakbyśmy robili to lokalnie.

Poza terminalem, mamy dostęp do REPLa (read-eval-print loop). Obecnie jest tu obsługiwany bash oraz JavaScript.

Uruchamianie i debugowanie kodu

Z wyjątkiem kilku języków, Code9 potrafi uruchamiać nasze skrypty z poziomu UI. Klikamy po prostu „Run” i uruchamia się odpowiedni proces – w zależności od języka. Co więcej, dla C++, Go, JavaScriptu, PHP i Pythona dostępny jest debugger. Żeby go użyć musimy odpalić nasz program z opcją „Run in Debug Mode”. Wszystkie najważniejsze funkcjonalności, czyli stawianie breakpointów, wykonywanie kolejnych linii czy wchodzenie do implementacji funkcji są dla nas dostępne.

Integracja z AWS

Jak nietrudno się domyślić AWS zadbał, żeby używanie Cloud9 wraz z innymi usługami AWS było możliwie bezbolesne. I trzeba przyznać, że ta integracja zrobiona jest bardzo przyzwoicie. Jak już wspomniałem, mamy w systemie domyślnie zainstalowane AWS CLI. Ponadto, Cloud9 integruje się z usługami dla programistów, m.in. z CodeStar czy CodePipeline.

Jednak najmocniejszy akcent został położony na wspieranie aplikacji serverless. W skrócie: Code9 bardzo elegancko pomaga używać AWS Lambda oraz przy okazji API Gateway. Na czym to polega? Z poziomu Cloud9 możemy:

  • tworzyć nowe funkcje Lambda
  • uruchamiać i debugować je lokalnie
  • uruchamiać i debugować je zdalnie (w środowisku AWS Lambda)
  • importować do Code9 już istniejące funkcje
  • tworzyć endpointy w API Gateway i przypisywać do nich odpowiednie funkcje

Wszystko to da się „wyklikać” w Cloud9, które wygeneruje nam właściwe zasoby przy pomocy odpowiednich szablonów CloudFormation. Całkiem wygodne 🙂

Warto również wspomnieć o tym, że kod funkcji Lambda można edytować z poziomu konsoli AWS. Niemniej jednak, dotychczasowy edytor został zastąpiony przez uproszczoną wersję Cloud9.

Pair programming

Teraz dla mnie jedna z ważniejszych cech Cloud9, czyli możliwości współpracy wielu programistów nad tym samym kodem. Możemy nasze IDE przekształcić w „shared environment”, dzięki czemu kilka osób może jednocześnie (lub nie) pracować nad tym samym programem oraz komunikować się poprzez prosty chat. Działa to trochę podobnie do popularnych dokumentów Google. Baaardzo przydatne przy programowaniu w parach albo nawet w większej grupie. Choć model pracy, w którym pięciu programistów pracuje nad tym samym kodem nie jest pewnie optymalny. 😉

Takie współdzielone środowisko może być też przydatne w celach edukacyjnych, kiedy to nauczyciel ma szybki wgląd w prace swoich uczniów i na bieżąco może dostarczać im niezbędnych wskazówek.

Moim zdaniem, te funkcje, które umożliwiają współpracę nie są może zupełnie innowacyjne, istnieją już podobne narzędzia, ale ich obecność jest dla mnie jedną z najpoważniejszych zalet AWS Cloud9. 🙂 Warto je sprawdzić!

Podsumowanie testu

Zalety:

+ fajne opcje współpracy nad wspólnym kodem
+ dobra integracja z usługami AWS, szczególnie z Lambdą
+ zaskakująco duże możliwości konfiguracyjne jak na IDE w przeglądarce 🙂

Wady:

– Cloud9 w wersji darmowej (czyli na instancji t2.micro) działa wolniej niż IDE na moim laptopie. Nic dziwnego, ale za lepszą maszyną na AWS musiałbym już trochę zapłacić.
– nie ma (jeszcze?) aż tylu funkcji i opcji jak sprawdzone w boju kombajny typu IntelliJ czy Eclipse
– nie ma obsługi pluginów

Warto również w tym miejscu wymienić kilka podobnych systemów do Cloud9:

Mam trochę przemyśleń a propos IDE w chmurze i tego jak w przyszłości będzie wyglądała praca nad kodem. Postaram się je zebrać i zrobię z tego osobny wpis. Tymczasem zachęcam do odpalenia Cloud9, pobawienia się i sprawdzenia jakie ma możliwości. We FreeTier można to zrobić za darmo. 🙂

Czy ja jutro zatem wyrzucę swoje IDE i przeniosę się do Cloud9?

A co tam! Zrobię eksperyment i częściowo spróbuję! 🙂 Obecnie w pracy używam PyCharma do pisania funkcji AWS Lambda w Pythonie oraz Visual Studio Code do pisania aplikacji w JavaScripcie. Myślę, że eksperymentalnie zrezygnuje na jakiś czas z PyCharma i do Pythona będę używać Cloud9. Zwłaszcza, że łatwo będzie mi testować moje funkcje Lambda. Ciekawe czy to wypali…

Dam znać jak będzie mi szło. 🙂

Trzymaj się i jak zawsze…

NIECH KOD BĘDZIE Z TOBĄ!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *