Upload
social-connections
View
904
Download
0
Embed Size (px)
Citation preview
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Bosch Connect: Under the Hood
Daniel Glück Lead Developer Bosch Corporate IT
Daniel Togelang Front-end Engineer Bosch Corporate IT
1
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Introduction
Responsible for the
Bosch Connect custom theme
Expert for JavaScript and CSS
development workflows
Started in 2012 to work with IBM
Connections, back then in
Version 3
Lead Developer and Release
Manager for Bosch Connect
Started in 2012 to work with IBM
Connections, back then in
Version 3
Who we are
@daniel_glueck @danieltogelang
2
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Bosch Connect: Under the Hood
Agenda
Introduction
Installation and deployment
Front-end customizations and workflows
RecommendationsFurther Bosch presentations:
Today at 4:55 pm - 5:25 pm
INTERNAL
CROWDSOURCING @ BOSCH
Tomorrow from 11:05 am - 11:35 am
THE IMPORTANCE OF
COMMUNITY-BASED COLLABORATION
FOR ROBERT BOSCH GMBH
3
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Bosch: A global network
Four business sectors
Mobility
Solutions
Industrial
Technology
Energy and
Building
Technology
Consumer
Goods
4
Bosch: Four business sectors
2014 key figures
One of the world’s largest suppliers of
automotive technology
Industrial
Technology
Energy and
Building Technology
Bosch Group €48.9 billion in revenue
290,000 associates
371,000 associates as per Sep, 2015*
MobilitySolutions
Leading in drive and control technology,
packaging, and process technology
Leading manufacturer of securitytechnology
Global market leader of energie-efficentheating products and hot-water solutions
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Consumer
Goods Leading supplier of power tools
and accessories Leading supplier of household appliances
68%
share
of sales
*including BSH Hausgeräte GmbH (formerly BSH Bosch und Siemens Hausgeräte GmbH)
and Robert Bosch Automotive Steering GmbH (formerly ZF Lenksysteme GmbH).
32%share
of sales
5
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Introduction
General information
Bosch Connect is the central social software platform at Bosch
Running on IBM Connections 5 since 11/2014
Currently running on IBM Connections 5 CR3 since 09/2015
Very good system performance and decent stability, but lots of tuning
and tweaking needed to get there
Mobile access from Internet and corporate Wi-Fi available
6
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
190,000 users onboarded
Up to 70,000 unique users per day
27,000 communities
1,000,000 activity stream stories per month
1,000,000 profile tags173,000 wiki pages
2,000 mobile users
Most used: Communities
7
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Introduction
File Storage
DB Cluster
ServersLoad
Balancer
Access
Manager
Mobile Access
Browser Access
Enterprise Security Zone
Third-party Apps Add-ons:
MongoDB Express
AngularJS Node.jsIncl. IBM
plugins for
desktop and
Outlook
IT platform
8
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Introduction
System landscape and update path
Development
systems (D)D-1 D-2 D-N D-Uncustomized
P-Next P-System
Line switch on major update
Scripted
DB migration
Oracle Data Pump
Delta rsync
Facts from the
IC45 to IC5
Update:
Data Pump: 8h
DB Migration: 2h
Delta rsync: 1h
Nightly build &
regression test
CRs, fixes,
customizations
deploy
9
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Introduction
Custom Community WidgetsUI customizations
Third-party extensions
Integrations
Configurations
10
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
How do we install
Bosch Connect and
deploy our customizations?
11
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
How we install and deploy Bosch Connect
To keep the update process manageable, all steps to install and
customize Bosch Connect are scripted
product-setup:
Installs WebSphere Application Server
Installs IBM HTTP Server, Apache Reverse Proxy, Squid Proxy
Installs IBM Connections
Basic configuration so that a plain IBM Connections without any
customizations can be used after product-setup
deploy-tool
Apply all custom settings such as WebSphere configurations
(Heap Sizes, Security Roles, Weblayer, IHS Plugin etc.)
IBM Connections configuration files
Customization, htdocs, web resources etc.
12
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
product-setup basics
product-setup is based on an Ant script and several Jython scripts
product-setup is based on pre-recorded response files (see [imcl]) for
WebSphere, IBM HTTP Server, IBM Connections
All environment specific settings are replaced with placeholders
<?xml version="1.0" encoding="UTF-8"?>
<agent-input>
<server>
<repository
location='@@iim_repos_basepath@@/ic5/IBM_Connections_Insta
ll_Linux/IBMConnections' />
</server>
<profile id='IBM Connections'
installLocation='@@ic_install_root@@'>
<data key='eclipseLocation' value='@@ic_install_root@@' />
<data key='user.import.profile' value='false' />
<data key='user.job' value='INSTALL' />
<data key='user.lcinstallscript.path'
value='@@iim_log_root@@/../LCInstallScript' />
<data key='user.clusterlist' value='' />
<data key='user.nodeslist' value='@@ic_nodes_list@@' />
...
Excerpt from IBM Connections response file Excerpt from env properties
ic_install_root=/data/home/wassys/Connections
## Installation Manager propertiesiim_repos_basepath=/data/mnt/bcshare/installiim_log_root=/data/home/instManager
ic_nodes_list=Node01,Node02,Node03,Node04env.server.list=srv1.bosch.com,srv2.bosch.com,srv3.bosch.com,srv4.bosch.com...
13
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
product-setup – A quick walkthrough
1. Copy all installation files to the deployment manager
2. Checkout product-setup from Subversion
3. Prepare your environment properties
4. Execute the following targets from product-setup on Dmgr:
1. prepare-dmgr: Install and start the Deployment Manager
2. prepare-all-cluster-nodes: Install and start all nodes
3. install-connections: Install IBM Connections
4. post-install-connections: Configure webserver, synchronize
nodes, import certificates to truststore
5. Done
To practice the steps before on a dev system during upgrade, we
have an uninstall routine: It deletes all folders on all nodes by using
the environment properties again, kills all Java HTTP processes etc.
Facts:
20 min
1 min
15 min
10 min
10 min
120 min
10 min
--------
186 min
14
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
Example for install-connections<target name="install-connections" depends="encrypt-passwords, remove-empty-placeholders, copy-jdbc-drivers, create-log-dir-install-connections" unless="progress.install-connections.done"description="Installs IBM Connections 5"><echo level="info">Installing IBM Connections 5</echo><tstamp /><exec executable="${iim_install_root}/eclipse/tools/imcl"failonerror="true"><redirector output="${basedir}/logs/${env}/install-connections/install-connections_${DSTAMP}_${TSTAMP}.log" alwayslog="true" /><arg value="-acceptLicense" /><arg value="-silent" /><arg value="-input" />
<arg value="${basedir}/environments/${env}/response_ic.xml" /></exec><antcall target="restart-dmgr" /><propertyfile file="${progress_log}"><entry key="progress.install-connections.done" value="true" />
</propertyfile></target>
15
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
Example for executing command on all nodes<var name="count" value="1" /><!-- Store all server names in temporary variables --><for list="${env.server.list}" param="server">
<sequential><property name="server.prepare.${count}" value="@{server}" /><math result="count" operand1="${count}" operation="+" operand2="1" datatype="int" />
</sequential></for><parallel failonany="true">
<if><isset property="server.prepare.1" /><then><exec executable="/bin/sh" resultproperty="server.prepare.result.1">
<arg value="-c" /><arg value="ssh ${server.prepare.1} 'cd ${path}; ./02_prepare_nodeStandalone.sh -Denv=${env}'" />
</exec></then>
</if><if><isset property="server.prepare.2" /><then><exec executable="/bin/sh" resultproperty="server.prepare.result.2">
<arg value="-c" /><arg value="ssh ${server.prepare.1} 'cd ${path}; ./02_prepare_nodeStandalone.sh -Denv=${env}'" />
</exec></then>
</if><!– Add more servers if required --></parallel>
16
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
deploy-tool basics (1)
deploy-tool is based on Ant and Jython scripts and runs on Windows
All environment specific settings are replaced during execution
Heavy use of Jython scripts executed with wsadminThinClient1,2
Parametrized execution: environment, wsadmin.password, os.user,
os.password
<sloc:serviceReference bootstrapHost="" bootstrapPort="" clusterName="NewsCluster" enabled="true" serviceName="deploymentConfig" ssl_enabled="true">
<sloc:href><sloc:hrefPathPrefix>/connections</sloc:hrefPathPrefix><sloc:static href="https://@static.href.address@" ssl_href="https://@static.href.address@" /><sloc:interServicehref="@interService.href.protocol@://@interService.href.address@" />
</sloc:href></sloc:serviceReference>
Excerpt from LotusConnections-config.xml template file
Excerpt from environment property file
@interService.href.protocol@ = [email protected]@ = [email protected]@ = host1.bosch.com1 see [wsadmin], 2 see [wsadminThinClient]
17
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
deploy-tool basics (2)
Is used to package different changes to a release by using deploy
scopes, e. g. release only the Communities configuration
To deploy a release, we trigger the deploy-tool from Eclipse for
D-Systems or from Jenkins CI server for P-System
# Release: 2.3.1# For a complete change log see JIRA
# EPTACT-1295 - Integrate internal Widgetrelease.httpserver.htdocs=truerelease.communities.config=truerestart.communities.server=true
# Release: 3.0# For a complete change log see JIRArelease.complete=true
Example for release.properties
D-System: Launch from within Eclipse
P-System: Launch from Jenkins
18
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Installation and deployment
deploy-tool technology
Makes heavy use of Jython scripts executed with wsadmin1
To execute the scripts, wsadminThinClient2 is used
Standard Ant tasks for copying files, replacing placeholders etc.
<exec executable="${deploy.wsadmin.dir}/wsadmin.bat"
dir="${deploy.wsadmin.dir}"
resultproperty="wsadminResult" timeout="600000">
<arg value="${dmgr.host}" />
<arg value="${dmgr.port}" />
<arg value="${wsadmin.username}" />
<arg value="${wsadmin.password}" />
<arg value="${deploy.wsadmin.lang}" />
<arg value='"${tmp.scripts.dir}/${pythonscript}"' />
<arg value='"${tmp.propertyfile}"' />
</exec>
Exec wsadminThinClient from Ant Some of the Ant tasks we use
1 see [wsadmin], 2 see [wsadminThinClient]
copy
exec
replace
scriptdef
scp
sshexec
Ant-Contrib Tasks: if,
propertycopy, var,
propertyregex
19
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
What do we customize?
20
1. Widgets: SharePoint, integration of internal applications
2. Third-party applications: BEO Expert, translation service, Social QA
3. Custom theming
4. Extending the core application:
Skype for Business status in business card and contact information,
live user notification, developer/operation tools, …
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Customization of Bosch Connect
21
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Front-end customizations and workflows
Dev system
information
Live user
notificationCustom theming
Skype for Business
Integration
22
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Challenges
What are our challenges in customizing the product?
23
1. Integration of external third-party products
2. Frequent updates of Bosch Connect
3. Challenging IBM Connections documentation
4. Developer freedom of IDE choice
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Front-end customizations and workflows
24
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Front-end customizations and workflows
Developer tools
25
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
What’s the solution?
26
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Front-end customizations and workflows
Common mindset of technologies
27
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Loading global dependencies in header.jsp
Loading all required libs within the header
JS libraries:
jQuery
jQuery UI
Internationalization (i18n)
…
<script src="/libs/jquery.min.js"></script>
<script src="/libs/jquery-ui.min.js"></script>
<script src="/libs/jquery.i18n.properties.min.js"></script>
Front-end customizations and workflows
28
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Loading specific JS and CSS in footer.jsp
CSS:
<link … type="text/css“ href="/assets/css/header.css" />
<link … type="text/css" href="/assets/css/menu.css" />
<link … type="text/css" href="/assets/css/colors.css" />
JavaScript:
<script src="/assets/js/beoExperts.js"></script>
<script src="/assets/js/notifier.js"></script>
<script src="/assets/js/serverinformation.js"></script>
Front-end customizations and workflows
29
1. Adding new CSS files, JS modules etc. needed restarts
2. Extra web server requests with each new module
3. No minification, no hinting (static code analysis)
4. Different code formatting because of different tools/IDE usage
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Challenges
30
1. Coding conventions/standards for external suppliers and internal
developers
2. Standard development workflows and deployments
3. Tools that support developers in coding and assure code quality
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Solutions
31
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Front-end customizations and workflows
Optimization of
development and
deployment with
32
1. Static code analysis with JSHint & CSSLint to avoid common errors
2. Compilation of SASS to CSS, ES6 to ES5 and CoffeeScript to JS
3. Formatting the source code
4. Concatenation of JS & CSS files to a single file
5. Minification of the single output file
6. Copy output to relevant deployment folders
7. Use the deploy-tool to deploy to our different systems
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Grunt Development Workflow
33
Recommendations
Script as much as possible to keep your updates free of pain
Setup a development system for each developer
Manage all of your files in a versioning system, e.g. Subversion
Use Continuous Integration tools such as Jenkins and regression tests
Consider Eclipse Java EE IDE for Web Developers (+ additionally some
Plugins such as PyDev Plugin) to edit all of your product-setup, deploy-
tool files and to execute different deploy scopes easily
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Summary
34
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
References
[imcl] Record a response file with Installation Manager,
https://goo.gl/LXm95K
[imutilsc] Encrypt passwords in product-setup, http://goo.gl/shUWxl
[wsadmin] Wikipedia wsadmin, https://goo.gl/Amnvnr
[wsadminThinClient] Using the Administration Thin Client,
http://goo.gl/v0Yd9z
35
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Thank you for your attention!
36
Daniel Glueck, Daniel Togelang, Robert Bosch GmbH - Corporate IT | November 5th 2015 | © Robert Bosch GmbH 2015. All rights reserved,
also regarding any disposal, exploitation, reproduction, editing, distribution, as well as in the event of applications for industrial property rights.
Social Connections 9 Sponsors
37
PLATINUM & CHAMPAGNE SPONSORS
GOLD SPONSORS
SILVER SPONSORS
BRONZE SPONSORS