Dynamic Languages In The Enterprise (4developers march 2009)

3,370 views
3,278 views

Published on

Slightly more generic version of my 'Enterprise PHP' talk, adjusted for the 4developers conference's 'dedicated languages' track that features developers with different backgrounds.

Published in: Technology
1 Comment
11 Likes
Statistics
Notes
No Downloads
Views
Total views
3,370
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
141
Comments
1
Likes
11
Embeds 0
No embeds

No notes for slide

Dynamic Languages In The Enterprise (4developers march 2009)

  1. 1. Dynamic Languages in the Enterprise Ivo Jansch - ivo@ibuildings.com Dynamic Languages in the Enterprise
  2. 2. What’s an Enterprise? “Any of several ships by that name in the Star Trek universe” – Wikipedia “A business, company or comparable organization” Dynamic Languages in the Enterprise
  3. 3. Top 10 Polish Websites 1. Google 2. Nasza-klasa.pl 3. Onet 4. Allegro 5. Wirtualna Polska 6. YouTube 7. Interia.pl 8. Wikipedia 9. Fotka.pl 10. Gazeta Source: Alexa.com, March 2009 Dynamic Languages in the Enterprise
  4. 4. Top 10 Polish Websites 1. Google C, Python 2. Nasza-klasa.pl Java 3. Onet Tcl 4. Allegro PHP, Perl 5. Wirtualna Polska Java, PHP 6. YouTube Python 7. Interia.pl PHP 8. Wikipedia PHP 9. Fotka.pl PHP 10. Gazeta Java Dynamic Languages in the Enterprise
  5. 5. The Quest So Far Enterprise SME SOHO Dynamic Languages in the Enterprise
  6. 6. Are we ‘enterprise ready’? Dynamic Languages in the Enterprise
  7. 7. Are we‘enterprise ready’? Big Small    Enterprise friendly  Lightweight  enterpriCe  Inexpensive  CS required  Easy to learn (ok, except perl ;-)) Dynamic Languages in the Enterprise
  8. 8. A word from my girlfriend SIZE of the tool... It's not the It's how you USE it. Dynamic Languages in the Enterprise
  9. 9. Traditional metaphor LEGO bricks Dynamic Languages in the Enterprise
  10. 10. Improved metaphor The web is no longer a toy Let’s use the metaphor of actual bricks Dynamic Languages in the Enterprise
  11. 11. About Bricks • Extreme Simplicity • Easy to learn • Versatile • Inexpensive Dynamic Languages in the Enterprise
  12. 12. Enterprise Development In 10 steps Dynamic Languages in the Enterprise
  13. 13. Step 1 – The Team “I have read about your plans to build a new skyscraper and I am applying for a job. I have a lot of experience with Bricks. I taught myself how to use them and have been maintaining our family shed for a few years now.” Dynamic Languages in the Enterprise
  14. 14. Step 1 – The Team • Be a Software Engineer • Train your skills • Study OO principles • Consider Certification Dynamic Languages in the Enterprise
  15. 15. Step 2 - Requirements • What does the customer want? • What will visitors want? • What does the customer really need? Dynamic Languages in the Enterprise
  16. 16. Step 2 - Requirements Functional Design • Requirements Definition • Interaction Design / Wireframes • Flow Diagrams • Tip: Axure Dynamic Languages in the Enterprise
  17. 17. Step 3 - Architecture Don’t just start stacking bricks Create an architecture first Dynamic Languages in the Enterprise
  18. 18. Step 3 - Architecture Technical Design • Modeling • Class Diagrams • ER Diagrams (data model) • Collaboration Diagrams • Use Cases etc. • Tools: • UML • Whiteboards Dynamic Languages in the Enterprise
  19. 19. Step 3 - Architecture High Level Architectures: • MVC (Model, View, Controller) • SOA (Service Oriented Architecture) • Multi-tier development (Frontend, Application, BL, Data) • CBD (Component Based Development) Dynamic Languages in the Enterprise
  20. 20. Step 4 - Tools You don’t need tools… But they make you productive Dynamic Languages in the Enterprise
  21. 21. Step 4 - Tools Development: • Eclipse • Zend Studio • Vim • Komodo IDE’s versus Editors • Debugging & Profiling • Syntax Check • Cross-Referencing / Navigation Dynamic Languages in the Enterprise
  22. 22. Step 4 - Tools Source Control • CVS / SVN / MS VSS • Bitkeeper / GIT Documentation • PHP - phpDocumentor http://phpdoc.org • Python - Epydoc http://epydoc.sourceforge.net/ • Perl - OODoc http://perl.overmeer.net/oodoc/ • Ruby - RDoc http://rdoc.sourceforge.net/ • Wiki http://en.wikipedia.org/wiki/List_of_wiki_software Dynamic Languages in the Enterprise
  23. 23. Step 5 - Foundation Start stacking bricks? • How many bricks does it take? • What about stability? Start with a foundation Dynamic Languages in the Enterprise
  24. 24. Step 5 - Foundation Use a framework • Provides guidelines (frame) • Off the shelf components Examples • PHP - Zend Framework http://framework.zend.com • Ruby - Rails http://rubyonrails.org/ • Python - Django http://www.djangoproject.com • Perl - Catalyst http://www.catalystframework.org Dynamic Languages in the Enterprise
  25. 25. Step 5 - Foundation The “Not Invented Here” Syndrome: • “The existing frameworks are no good. I can do this better.” • “This framework is no good. It can do A through Y but I need Z.” • “This framework is too big. It provides A-Z but we only need A and B.” • “I know there's a good framework. But I would like to learn.” Dynamic Languages in the Enterprise
  26. 26. Step 6 - Design Patterns Requirement 1056.4: We need to be able to look outside, but we can't make holes in the wall (rain should be kept outside). When it's sunny, a hole is ok. Dynamic Languages in the Enterprise
  27. 27. Step 6 - Design Patterns • A ‘window’ is a concept • Best practice way of solving a particular problem • In IT, we call this a ‘design pattern’ • Popular patterns on the web: • MVC, Factory, Singleton, Registry, Decorator • Good read: • php|architect's Guide to PHP Design Patterns - Jason E. Sweat Dynamic Languages in the Enterprise
  28. 28. Step 7 - Testing Is your software tested after it has gone live? Dynamic Languages in the Enterprise
  29. 29. Step 7 - Testing Various types of testing: • Developer testing • Functional testing • Environment testing • Performance testing • Usability testing Dynamic Languages in the Enterprise
  30. 30. Step 7 - Testing A common scenario… Dynamic Languages in the Enterprise
  31. 31. Step 7 - Testing The user complains… MWOEHA! BUG! Dynamic Languages in the Enterprise
  32. 32. Step 7 - Testing Developer attacks the problem… fix_bug(); Dynamic Languages in the Enterprise
  33. 33. Step 7 - Testing Problem Solved! Dynamic Languages in the Enterprise
  34. 34. Step 7 - Testing • Solution: Unit Tests • Automated testing after each change • Prevents regressions • Testing for web applications: • PHP - PHPUnit http://www.phpunit.de/ • Ruby - Test::Unit http://tinyurl.com/testunit • Python - Unittest http://docs.python.org/library/unittest.html • Perl - PerlUnit http://perlunit.sourceforge.net/ • Continuous Integration: •CruiseControl http://cruisecontrol.sourceforge.net/ Dynamic Languages in the Enterprise
  35. 35. Step 7 - Testing • Test Driven Development 1. Define functionality 2. Create testcase 3. Run test => test fails 4. Implement functionality • Test succeeds? Done • Test fails? Refactor Repeat step 4 until finished Dynamic Languages in the Enterprise
  36. 36. Step 8 - Optimization Users complain: “Every time I want coffee I have to go to the top floor to get some.” Dynamic Languages in the Enterprise
  37. 37. Step 8 - Optimization • Solution: • Create small coffee corners on every floor so people don’t have to go to the main restaurant every time. • Developers call this ‘caching’ • Don’t query the database everytime you need data • Use locally stored copy (file or memory) • Caching your framework for caching support solutions: •Check • Memcached http://danga.com/memcached/ • Varnish http://varnish.projects.linpro.no/ Dynamic Languages in the Enterprise
  38. 38. Step 9 - Deployment • Lifecycle: • Develop • Test • Deploy to staging environment • Deploy to live • Use SVN • Code is just a part, don't forget the database • Create a 'Deployment & Release Profile' Dynamic Languages in the Enterprise
  39. 39. Step 9 - Deployment System Architecture PHP/Ruby/etc MySQL Apache Linux From a simple single machine stack… Dynamic Languages in the Enterprise
  40. 40. Step 9 - Deployment … to a High Availability, Scalable Architecture Dynamic Languages in the Enterprise
  41. 41. Step 10 - Operations Monitoring: • Logfiles • Monitor infrastructure (tools such as Nagios) • Monitor application (tools such as Zend Platform) • Monitor business (is the money still pouring in?) Dynamic Languages in the Enterprise
  42. 42. Step 10 - Operations Debugging • Ideal: “I had error x when I selected y after I clicked z” • Reality: “It doesn't work!” “What exactly doesn't work, and what did you do?” “It just ******** didn't work, FIX IT.” Dynamic Languages in the Enterprise
  43. 43. Step 10 - Operations Solutions: • A ‘root cause’ analysis tool • Logging • Context Capture Dynamic Languages in the Enterprise
  44. 44. Step 10 - Operations Change management: • Ticket system • Stick to your deployment - use the DRP • DON'T TOUCH THE LIVE ENVIRONMENT. EVAH! Dynamic Languages in the Enterprise
  45. 45. The Big Picture (We’re almost done) Dynamic Languages in the Enterprise
  46. 46. The Big Picture • No ‘cowboy coding’, but structured steps • Higher quality • Software will be easier to maintain (and cheaper) • Development methodology • Waterfall • Agile (DSDM, XP, Scrum) • Software Development Life Cycle (SDLC) • Adapt from existing methods, learn from experts • Document it properly • Make it the cornerstone of your development efforts Dynamic Languages in the Enterprise
  47. 47. More things to think about • Planning • Coding • Implementation • Security Dynamic Languages in the Enterprise
  48. 48. Shameless Plug Book about this all: • php|architect’s Guide to Enterprise PHP Development • ISBN: 978-0-9738621-8-8 • Order at phparch.com or amazon.com • http://www.enterprisephp.nl Dynamic Languages in the Enterprise
  49. 49. Questions? ivo@ibuildings.com http://www.ibuildings.com http://www.jansch.nl Twitter: @ijansch @ibuildings Dynamic Languages in the Enterprise

×