37
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

Bosch Connect: Under the Hood

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