1. To be a Software Engineer today
(and in the future…)
http://labs.sogeti.com/
(and in the future…)
Sogeti Labs meeting / 2014 december / @ltguerin ver 1.1
2. Software Engineer … who’s that guy ?
Technology
trends
Mindset
evolutions
? DevOps
2
?
Permanently
in evolution !
DevOps
3. Scripting is now everywhere
Even on the server side with Node.js
Each year new languages
Technology / Languages & programming paradigms
3
Programming paradigms evolution :
Procedural oriented programming
Event driven programming
Object oriented programming (OOP)
Aspect oriented programming (AOP)
Functional programming :
Scala, Erlang, Haskell, F#,
Java 8 with Lambdas, …
Back to native languages ?
C/C++
(old but still at the top )
D (Digital Mars)
Go (Google)
4. In the past :
SQL = “one language to rule them all”
But now ?
No SQL (key/values, document, graph )
Big Data (hadoop, …)
New SQL (in memory, …)
Technology / Data management
4
New SQL
The return of SQL?
New SQL (in memory, …)
5. Mashup is inevitable
API is everywhere
An application is no longer isolated
but integrated into an heterogeneous environment
Technology / Architecture
API = the new must-have
for business
“the API economy”
5
“Micro Services” architecture
Mashup is inevitable
“the API economy”
6. cf "The Reactive Manifesto"
http://www.reactivemanifesto.org/
Application requirements have changed
dramatically in recent years
We expect …
- millisecond response times
- 100% uptime
- data measured in Petabytes
Today's demands are simply not met by
yesterday’s software architectures.
Technology / Reactive applications
6
yesterday’s software architectures.
We want systems that are Responsive,
Resilient, Elastic and Message Driven.
We call these “Reactive Systems”
8. Technology / New devices
Not only computer !
Internet of the Things
M2M RobotsSmartphones
8
Raspberry pi, Arduino, etc…
SmartWear
Electronic
is back !
The developer’s
playground ?
Drones
10. Mindset / Social coding & influences
but the response is always in
is the developer’s best friend,
is the developer’s heaven
The developer is sharing a lot of stuff via …
- Communities (JUG, GDG, …)
- Meetings & events (Devoxx, MeetUP, BBL, etc…)
Gurus show the way
• Linus Torvald
• Martin Fowler
Social
coding
The developer’s job influences :
10
Job
- Meetings & events (Devoxx, MeetUP, BBL, etc…)
- Blogs
- Social networks
- Open Source projects
• Martin Fowler
• etc…
The developer’s
generation is now the
“Y generation”
Personal activities
- Technology Watch
- Learning (MOOC)
- Experimentations,
- Open Source development…
Buzz
& fashion
Geek ?
The “2nd life”
11. Usable as a SaaS ?
Deployable on a PaaS / IaaS ?
Enough skills to use Virtual Machines and containers ?
What about …
• Authentication
• Horizontal Scalability
Data Storage
Mindset / The head in the cloud
Is my software
cloud ready ?
11
• Data Storage
• Multi-tenancy
• Sessions management
• Logging
• Monitoring
• Security
• etc …
Think different, think cloud !
12. Mindset / Be agile ! (or die)
Test Driven DevelopmentXP Best
Practices
12
SCRUM Behavior Driven Development
13. DevOps : the fall of the walls
My job
is to say
« NO »
DevOps =
Break the wall !
13
BUSINESS DEV OPS
AGILEMETHODS
DEVOPS
SCRUM
DevOps
XP
14. From Continuous Integration … to Continuous Deployment
DevOps… The grail quest ?
Continuous
Integration
Continuous
14
Continuous
Deployment
Continuous
Delivery
15. DevOps = Agile Process + Automation => Tools required !
DevOps… The tools
An example with
Jenkins & Docker
Jenkins output :
Not only the “software”, but
“Software + Environment”
Registry
15
Do not install
just “pull & run” !
- Pull image
- Run container
Host 1
Linux + Docker
Host 2
Linux + Docker
Host 3
Linux + Docker
Host 4
Linux + Docker
No
Virtual
Machine
(Linux only)
Automated
Acceptance
Tests
User
Acceptance
Tests
Staging
& pre-
production
Production
Pull
Registry
( images)
Push