Stackato- a developers experiences and evaluationby jonasbn for Copenhagen Perl Mongers
Disclaimer• I am jonasbn - like almost everywhere• Long time Perl and web developer• Open Source/CPAN contributor and previously freelance developer in logicLAB• Currently employed with DK Hostmaster• I have no afﬁliation with ActiveState
(My) Developer Needs• Easy access to platform, runtimes and frameworks• The least possible gap between development, test and production• Minimal differences between deployed code and the code in the editor• reproducibility for transparency
What do we have?• Unit-tests• Mocked objects and classes, stubs a.s.o• Local servers / emulators• Virtualization• Dedicated environments (dev/test/prod)• Code - lots of code...
complexity• We require magic• We rely on tribal knowledge• We need to jump through hoops
the Cloud• What is the cloud?• What problem does the cloud solve?• What needs does the cloud address?• So what is the cloud?
Points from Dr. Matt Wood• 30-70% divide• IT infrastructure friction• Focus on your core competences• Focus on delivering value• http://www.slideshare.net/FDIHdk/ahead-in- the-cloud-matt-wood-amazon
Amazon EC2• Amazon EC2 however does not get us there - no matter how much elasticity it provides• http://aws.amazon.com/
JS/Ruby/Perl in the cloud?• @ActiveState introduces #stackato based on phenona and Cloud Foundry• http://www.activestate.com/stackato• http://www.cloudfoundry.com/
Stackato• A micro-cloud • current version 1.0.6 • out of beta, released 2012.02.29• Platform as a Service (PaaS) private and public• Supporting several languages, their frameworks and commonly-used services
Hello World!ﬁrst demo: in Perl using Mojolicious
initial deployment• target, where do we want to deploy• login, it is all a matter of permissions• push, a “one-click” CLI deployment
inspecting deployment• logs, our classical log ﬁles• crashes, possible crashes• crashlogs, and their logs• ﬁles, our sandbox • ﬁles app, our application
operating• start, start a service• stop, stop a service• restart, restart a service• this is about it, for what I can provide for now, I have no experience with long time operation of a Stackato deployed service• Oh there is one more thing...
updating• update, when an application has been pushed (deployed) this is the command you will use• stackato.yml - a conﬁguration ﬁle for assisting deployment• stackato -n ...
All the little things• binding DNS, going beyond mDNS• binding services (databases et al.)• resource allocation, memory, instances etc.• logging (more on this later...)• now for some architecture...
Support• @ActiveState fora• #stackato on irc://irc.freenode.org with users and ActiveState staff• Webcasts• White papers• ActiveState are incredibly open and cooperative
Open Source Examples• @ActiveState examples on Github• my own fork is on Github• Github is nice!
Stackato is not• Open Source? - it is closed and proprietary • @ActiveState is however dedicated to keeping the micro-cloud solution free
Targets!• Multiple targets • development / test / production• Targets make sense in SCM context • trunk / branches / tags (releases)• You could just go for the micro-cloud, but you would loose some of the beneﬁts
App Store• Simply a matter of conﬁguration • Your complete application portfolio one click away • Operations - go shopping!• https://github.com/ActiveState/stackato- app-store
My Current Road Map• Oracle as a service (Perl driver DBD::Oracle and Oracle driver distribution issue) works!• Cryptographic components (export of PPMs, Perl packages) works!• Deployment of custom components works!• Full blown examples (Mojolicious over Mojolicious::Lite etc.) works!• Service integration (PostgreSQL)• mDNS and dynamic DNS (might be .local)• Central logging (syslog)
Conclusion• The Stackato cloud is awesome• @ActiveState mean serious business• I am going to present and propose Stackato as a part of our future infrastructure
Beneﬁts• Easy and controlled access to platform, runtimes and frameworks• The least possible gap between development, test and production and minimal differences between deployed code and the code in the editor depending on your cloud deployment• reproducibility for transparency since the amount of magic is kept at a minimum
jonasbn!• @jonasbn, jonasbn@logicLAB.dk• Blogs: logicLAB.org and logicLAB.dk• Presentation on Slideshare.com• logicLAB Open Wiki