0
Carton                            Tatsuhiko Miyagawa                           YAPC::Asia 2011 TokyoFriday, October 14, 2011
Managing CPAN                            DependenciesFriday, October 14, 2011
Case Study:                           (Poor) Web DevelopmentFriday, October 14, 2011
You’re writing a new web app.                           You don’t wanna reinvent wheels.                           Want to...
Fine.                            Get them from CPAN,                           install on your machine.Friday, October 14,...
>	  cpanm	  Web::Framework               installed	  LWP-­‐5.912               installed	  Plack-­‐0.9980               in...
Test it...Friday, October 14, 2011
Works? Ship it!Friday, October 14, 2011
Deployment                           Set up new production servers.                                Install CPAN modules   ...
Few weeks later...Friday, October 14, 2011
Your website is popular!                           Need more web servers!Friday, October 14, 2011
Re-Deployment                           Set up new production servers.                                Install CPAN modules...
“Crap, Web::Framework has been                              updated to 1.4 and many APIs                           have be...
Rollback                            Log in to the old web server.                            Check Perl module versions.  ...
“Crap, this author deleted                           the version 1.20 we want.                             Let’s go to Bac...
“Crap, version 1.20 doesn’t actually work                      with the newer LWP 6 that we just                   install...
and so on.Friday, October 14, 2011
What was wrong?Friday, October 14, 2011
• Dependency declaration                     • Isolated Perl environments                     • Version controls/history  ...
Many existing solutions                           MyCPAN, DPAN, CPAN::Mini::Inject,                                OrePAN,...
None of those                           didn’t quite work for me.                                (Or I haven’t even tried)...
So I wrote a new one.Friday, October 14, 2011
Carton                           https://github.com/miyagawa/cartonFriday, October 14, 2011
Inspired by...Friday, October 14, 2011
Friday, October 14, 2011
• App-specific local environment                     • Fast and safe install                     • Dep-tree analysis, inclu...
Local perl environment                                 Using local::lib and cpanm -L                           Each app ha...
Fast and safe install                                       cpanm 1.5                           Saves MYMETA.json and inst...
Dep tree analysis                      Rebuild the dependency tree from meta info                        Checks if anythin...
Locking versions                           Versions are saved in carton.lock                                including depe...
Easy Redeployment                           Reinstall exactly the same set of modules                           on another...
Single-file,VCS friendly                              You can add carton.lock to git                           update whene...
Safe and easy rollback                             revert the lock file and redeployFriday, October 14, 2011
DEMOFriday, October 14, 2011
>	  cpanm	  CartonFriday, October 14, 2011
WARNING                           It is beta software, some features are                           missing or not working ...
github.com/miyagawa/carton                                irc.perl.org #cartonFriday, October 14, 2011
Questions?Friday, October 14, 2011
Thanks!                           twitter.com/miyagawaFriday, October 14, 2011
Upcoming SlideShare
Loading in...5
×

Carton CPAN dependency manager

6,067

Published on

Published in: Technology, Art & Photos
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,067
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
12
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Transcript of "Carton CPAN dependency manager"

  1. 1. Carton Tatsuhiko Miyagawa YAPC::Asia 2011 TokyoFriday, October 14, 2011
  2. 2. Managing CPAN DependenciesFriday, October 14, 2011
  3. 3. Case Study: (Poor) Web DevelopmentFriday, October 14, 2011
  4. 4. You’re writing a new web app. You don’t wanna reinvent wheels. Want to use as many CPAN deps.Friday, October 14, 2011
  5. 5. Fine. Get them from CPAN, install on your machine.Friday, October 14, 2011
  6. 6. >  cpanm  Web::Framework installed  LWP-­‐5.912 installed  Plack-­‐0.9980 installed  Web-­‐Framework-­‐1.20 >  cpanm  JSON::Fast installed  JSON-­‐Fast-­‐1.91 >  cpanm  MIME::Parser::XS installed  MIME-­‐Parser-­‐XS-­‐0.20Friday, October 14, 2011
  7. 7. Test it...Friday, October 14, 2011
  8. 8. Works? Ship it!Friday, October 14, 2011
  9. 9. Deployment Set up new production servers. Install CPAN modules (until the errors are gone)Friday, October 14, 2011
  10. 10. Few weeks later...Friday, October 14, 2011
  11. 11. Your website is popular! Need more web servers!Friday, October 14, 2011
  12. 12. Re-Deployment Set up new production servers. Install CPAN modules (until the errors are gone)Friday, October 14, 2011
  13. 13. “Crap, Web::Framework has been updated to 1.4 and many APIs have been changed or deprecated!”Friday, October 14, 2011
  14. 14. Rollback Log in to the old web server. Check Perl module versions. Install them on the new server.Friday, October 14, 2011
  15. 15. “Crap, this author deleted the version 1.20 we want. Let’s go to BackPAN...”Friday, October 14, 2011
  16. 16. “Crap, version 1.20 doesn’t actually work with the newer LWP 6 that we just installed! Have to downgrade this too...”Friday, October 14, 2011
  17. 17. and so on.Friday, October 14, 2011
  18. 18. What was wrong?Friday, October 14, 2011
  19. 19. • Dependency declaration • Isolated Perl environments • Version controls/history • Dependency analysis • Repeatable deployments • etc.Friday, October 14, 2011
  20. 20. Many existing solutions MyCPAN, DPAN, CPAN::Mini::Inject, OrePAN, ShipwrightFriday, October 14, 2011
  21. 21. None of those didn’t quite work for me. (Or I haven’t even tried)Friday, October 14, 2011
  22. 22. So I wrote a new one.Friday, October 14, 2011
  23. 23. Carton https://github.com/miyagawa/cartonFriday, October 14, 2011
  24. 24. Inspired by...Friday, October 14, 2011
  25. 25. Friday, October 14, 2011
  26. 26. • App-specific local environment • Fast and safe install • Dep-tree analysis, including versions • Locking module versions • Easy Redeployment • Single-file,VCS friendly • Safe and easy rollbackFriday, October 14, 2011
  27. 27. Local perl environment Using local::lib and cpanm -L Each app has an isolated local library pathFriday, October 14, 2011
  28. 28. Fast and safe install cpanm 1.5 Saves MYMETA.json and install meta infoFriday, October 14, 2011
  29. 29. Dep tree analysis Rebuild the dependency tree from meta info Checks if anything is missing/superflousFriday, October 14, 2011
  30. 30. Locking versions Versions are saved in carton.lock including dependenciesFriday, October 14, 2011
  31. 31. Easy Redeployment Reinstall exactly the same set of modules on another prod/development machines.Friday, October 14, 2011
  32. 32. Single-file,VCS friendly You can add carton.lock to git update whenever you update modulesFriday, October 14, 2011
  33. 33. Safe and easy rollback revert the lock file and redeployFriday, October 14, 2011
  34. 34. DEMOFriday, October 14, 2011
  35. 35. >  cpanm  CartonFriday, October 14, 2011
  36. 36. WARNING It is beta software, some features are missing or not working correctly (yet).Friday, October 14, 2011
  37. 37. github.com/miyagawa/carton irc.perl.org #cartonFriday, October 14, 2011
  38. 38. Questions?Friday, October 14, 2011
  39. 39. Thanks! twitter.com/miyagawaFriday, October 14, 2011
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×