Automating Google Workspace (GWS) & more with Apps Script
Bay Area Drupal Camp Efficiency
1. When Efficiency Matters
for
Drupal
Scott Mattoon
Sun Microsystems, Inc.
http://blogs.sun.com/downstream
http://twitter.com/smattoon
1
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
2. Agenda
2
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
3. NetBeans for Drupal
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
4. NetBeans for Drupal
PHP Plugin http://wiki.netbeans.org/PHP
Run and Debug project action – break points, watches
Run single file, Debug single file, Run in command line
Wizard for creating new php and phtml files
Editing - Syntactic and Semantic coloring
Code Completion
File system code completion for include/require
Bracket Matching
Automatic Insertions (brackets, braces, parens, quotes)
Code Navigation - Go to Declaration/Type, Hyperlinking
Refactoring - Instant Rename
Drupal Module and Theme Wizard http://is.gd/lgnB
generates required files
provides template code
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
5. Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
6. VirtualBox for Drupal
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
7. Top 10 Reasons for Running Virtual Box
10 - You want to impress your friends.
9 - Your wife has told you one more computer in the house
and she's gone.
8 - Windows 3.1 is your favorite operating system.
7 - You want to make sure you have deleted all traces of
what you have done.
6 - You want to give root to your baby sister.
5 - You want to try writing a kernel module while drunk.
4 - You want to install that cracked version of Photo Shop.
3 - You've always wondered what deleting /bin would do.
2 - You really REALLY want to click on that email attachment.
1 - You like running that older version of Internet Explorer.
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
8. Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
9. OpenSolaris for Drupal
9
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
10. Glassfish WebStack
OpenSolaris AMP +++
Apache 2.2.11 Python 2.6.1
lighttpd 1.4.21 memcached 1.2.5
Squid 2.7.6 Apache Tomcat 6.0.18
MySQL 5.10 Glassfish Enterprise 2.1
PHP 5.2.9 Web Stack Manager 1.5
Ruby 1.8.7
nginx 0.6.35 webstack-dev-tools 0.1
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
11. Solaris – Linux Performance
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
12. Solaris – Linux Performance
THROUGHPUT
Lightweight & Complex Workloads
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
13. Solaris – Linux Performance
THROUGHPUT zoom in
Complex Workloads
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
14. The S in SAMP stands for Solaris
Solaris Zones
★ Free, lightweight and easy virtualization
★ Allocate a “system” to each app instance or to each developer
★ Resources are controlled in one of three ways
• Capped Resources: Upper limit on consumption
• Guaranteed Resources: Guarantee of a minimum available
• Dedicated Resources: Resources are set aside for
★ share filesystems and network across zones
OR
★ dedicate filesystems and network to individual zones
14
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
15. Need Efficiency & Control?
Hypothetical Constraints & Objectives
Constraints:
one server available
need to host four environments:
(2) Developers
(1) Test environment
(1) Production environment
Objectives:
maximize sharing, minimize redundancy
guarantee max. resources for production
maximize efficiency & consistency btw. envs.
15
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
16. Solaris Zones for Efficiency & Control
globalzone zoneA zoneB ... qazone prodzone
Apache Apache Apache
PHP PHP PHP
dbzone1 Apache
PHP
MySQL MySQL
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
17. Solaris Zones for Efficiency & Control
globalzone zoneA zoneB ... qazone prodzone
/usr/ -ro -ro /usr’
./apache -ro
./mysql -ro
./php -rw
/data/drupal-6.12 -rw -ro -ro /data/drupal-5.10
./misc -ro -ro
./modules -ro -ro
./scripts -ro -ro
./sites -rw -ro
./themes -ro -ro
./files -ro -rw
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
18. Find Hampster Wheels with DTrace
DTrace provider for PHP
“DTrace is one of those tools that makes you
wonder how you did anything without it before
you'd heard of it.
Why is it better than strace and similar tools? It's
non-invasive, fast, scriptable and extensible.”
- Wez Furlong
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
19. Performance Tuning - DEMO
DTrace provider for PHP
Which functions are being called by Drupal?
# dtrace -n function-entry'{printf(quot;called %s() in %s at
line %dnquot;,copyinstr(arg0), copyinstr(arg1), arg2)}' -q
How many times is a function called?
# dtrace -n function-entry'{@[copyinstr(arg0)] = count()}'
What's the file name and line number count:
# dtrace -n function-entry'{@[copyinstr(arg1)] =
lquantize(arg2, 0, 5000)}'
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
20. Security
RBAC
− Assign users to roles with privileges they need
Process Rights Management
− Run with least privileges
− E.g., not root, nosuid, noexec
20
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
21. Versioning & Protecting Data
ZFS snapshots & Rollback
$ zfs snapshot /data/site@31Oct
$ zfs snapshot /data/site@01Nov
- - - DEPLOY -> SMOKE-TEST -> UH-OH! - - -
$ cp .zfs/snapshot/@01Nov/Drupal_5.2/themes/mysite
./Drupal_5.2/themes
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
22. Project Caroline
Cloud Computing - Platform as a Service
Internet
Resource Types Your
Service Code
Launch service using
multiple load-balanced
+ processes, connected
to a backend database.
Flex processes to
match demand. ●●●
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
23. Drupal and Java
PHP apps on Glassfish
Two Options:
Quercus http://caucho.com/products/quercus.xtp
LRWP on Glassfish http://is.gd/mhxP
Gives you:
Database connection pooling
JIT Compiler
Makes possible clustering with Terracotta
Access to vast Java class library
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
24. Cool Drupal Site
on Solaris
24
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
25. Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
26. • 7 Creative Commons Licenses
• Drupal 5.10 + >12 new modules
• X64 tuned Webstack
• Solaris 10
• (2) SunFire X2200 M2 servers
• (1) 6TB SunStorage 3511
• Hosted at AMD datacenter
26
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
27. Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
28. Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
29. For More Information
Get OpenSolaris
− http://opensolaris.org/os/downloads/
ZFS
− http://opensolaris.org/os/community/zfs/
− http://tinyurl.com/235vxe
RBAC
− http://blogs.sun.com/darren/tags/rbac
Project Caroline
− https://www.projectcaroline.net/
VBox – Free Virtualization software
− http://www.virtualbox.org/
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
30. For More Information
NetBeans
− http://www.netbeans.org/
VBox – Free Virtualization software
− http://www.virtualbox.org/
Project Caroline
− https://www.projectcaroline.net/
Glassfish
− http://glassfish.java.net/
Running MySQL in Solaris Zones
− http://wikis.sun.com/display/BluePrints/Running+MySQL+Database+in+Solaris+Containers%20
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
31. For More Information
Get OpenSolaris
− http://opensolaris.org/os/downloads/
ZFS
− http://opensolaris.org/os/community/zfs/
− http://tinyurl.com/235vxe
SMF & Security
− http://www.opensolaris.org/os/community/smf/
− http://www.sun.com/software/solaris/howtoguides/s10securityhowto.jsp
DTrace
− http://blogs.sun.com/bmc/entry/dtrace_and_php_demonstrated
− http://blogs.sun.com/angelo/entry/dtrace_meet_the_amp_apache
RBAC
− http://blogs.sun.com/darren/tags/rbac
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
32. Q&A
Scott Mattoon
http://blogs.sun.com/downstream
twitter: smattoon
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
33. Resource Management & Isolation
Projects and Zone resource configuration
Projects
# projadd -c quot;Apache-PHPquot; -U webservd httpd.php
# projmod -sK quot;project.max-sem-ids=(privileged,256,deny)quot; httpd.php
# svccfg -s http:CSKapache2 setprop start/project = astring: httpd.php
# svcadm -v enable CSKapache2
CPU Shares
global# zonecfg -z zone1
zonecfg:zone1> add rctl
zonecfg:zone1:rctl> set name=zone.cpu-shares
zonecfg:zone1:rctl> add value (priv=privileged,limit=15,action=none)
zonecfg:zone1:rctl> end
zonecfg:zone1> exit
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009
34. The S in SAMP stands for Solaris
SMF for MySQL & Apache
MySQL
# svcadm -v enable mysql
# svcadm refresh mysql
# svcadm restart mysql
# svcadm disable mysql
Apache
# svcadm -v enable apache22
# svcadm refresh mysql
# svcadm restart mysql
# svcadm disable mysql
Bay Area Drupal Camp 2009 San Francisco | When Efficiency Matters - Drupal at Scale
Monday, June 8, 2009