High level overview of concepts Lemİ Orhan Ergİn Principal software Engineer @ Sony guide for non-developers Fundamentals of web development
Oct 19, 2014
High level overview of concepts
Lemİ Orhan ErgİnPrincipal software Engineer Sony
guide for non-developers
Fundamentals of web development
The aim of this training is to let youbull Know some advanced concepts of web and web developmentbull Understand how people develop web based softwarebull Understand the technical discussions betterbull And answer your questions
For introductory information about web concepts please check the slides of ldquoFundamentals of Web for Non-Developersrdquo
agenda
bullWeb Development ConceptsWeb Applications Web Services Url Rewriting DevelopmentDeployment
Web Applicationsand the evolution of web sites to web applications
Static web pages ruled the world We loved them and
let DotCom bubble blow
Evolution of web
Static web pages
Interactive web sites let the users communicate with
the sites by entering content
Evolution of web
Interactive web sites
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
The aim of this training is to let youbull Know some advanced concepts of web and web developmentbull Understand how people develop web based softwarebull Understand the technical discussions betterbull And answer your questions
For introductory information about web concepts please check the slides of ldquoFundamentals of Web for Non-Developersrdquo
agenda
bullWeb Development ConceptsWeb Applications Web Services Url Rewriting DevelopmentDeployment
Web Applicationsand the evolution of web sites to web applications
Static web pages ruled the world We loved them and
let DotCom bubble blow
Evolution of web
Static web pages
Interactive web sites let the users communicate with
the sites by entering content
Evolution of web
Interactive web sites
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
agenda
bullWeb Development ConceptsWeb Applications Web Services Url Rewriting DevelopmentDeployment
Web Applicationsand the evolution of web sites to web applications
Static web pages ruled the world We loved them and
let DotCom bubble blow
Evolution of web
Static web pages
Interactive web sites let the users communicate with
the sites by entering content
Evolution of web
Interactive web sites
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Web Applicationsand the evolution of web sites to web applications
Static web pages ruled the world We loved them and
let DotCom bubble blow
Evolution of web
Static web pages
Interactive web sites let the users communicate with
the sites by entering content
Evolution of web
Interactive web sites
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Static web pages ruled the world We loved them and
let DotCom bubble blow
Evolution of web
Static web pages
Interactive web sites let the users communicate with
the sites by entering content
Evolution of web
Interactive web sites
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Interactive web sites let the users communicate with
the sites by entering content
Evolution of web
Interactive web sites
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Reactive web applications both interact with the user and adapt itself by the needs of resolution and screen size
Reactive web sites
$amp$()
Evolution of web
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Web APplicationsA web application is an application that is accessed by users over a network such as the internet or an intranet It could be web sites messaging platforms search engines web services etc
bullPresentation OrientedbullService Oriented
bullClient SidebullServer Side
There exists similar but two types of defining web application types
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
For web pages content is visualized by images styles and scripts
Data Sources
Accepts all the requests and user inputs
Content is prepared by running some business logic All logic are coded by programming languages
Knows how to access data from data sources
Databases files remote data services other components could be your datasource
Web APplications
Requests contain a uri headers and a message body
Responses are the content to be rendered by browsers
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Controller Business Data Access
Presentation
request
Response
httpwwwsonycouk
Data Sources
Web APplications
Designers UX teams Front-end developers prepare the
presentation of web applications
Developers code and develop software
Business Analysts gather requirements
and define open points
Testers check if the requirements are developed as business requests
Customers check if what they requested is implemented properly
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Web Servicesor simply saying the web components serving data to the requesters
Web ServicesRESTful Web Services
Simple Object Access Protocol (SOAP)Service Oriented Architecture (SOA)
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
web servicesWeb services are services for doing specific functionalities that are made available from a businesss Web server for Web users or other Web-connected programs
1 REST-Compliant Web services in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of stateless operations
2 Arbitrary Web services in which the service may expose an arbitrary set of operations
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
To design a website you need to know about HTTP XHTML and URIs
A uniform resource identifier (URI) is a string of characters used to identify a name or a web resource such as a web page or special set of data (like product
data or user information) ldquoproduct45242366rdquo is a URI identifying a specific product
web services
XHTML could be defined as HTML in valid XML structure
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
To design a web application you need to know about HTTP XHTML and URIs
web services
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
To design a web service you need to know about XML SOAP WSDL UDDI WS-Policy WS-Security WS-Eventing WS-Reliability WS-Coordination WS-
Transaction WS-Notification WS-BaseNotification WS-Topics WS-Transfer
What
web services
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
WEBIt is most successful distributed
platform in the world
its simple enough for average humans to understand
Why not using HTTP and URIsfor web services
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
RESTRepresentational State Transfer (REST) is a style of software architecture for distributed systems such as the World Wide Web
Client-ServerStateless
CacheableLayered System
Uniform Interface
Services and applications conforming these constraints are ldquoRESTfulrdquo
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Restful web services
GET product1212
94
3
7 6
POST product4 with ldquodatardquo
data
Create
datad
PUT product3 with ldquodatardquo Update
data
DELETE product7 Delete
Retrieve
RESTful Web Services use HTTP methods explicitly do not store any state expose directory structure-like URIs and transfer data in XML XHTML JSON format
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
soapSimple Object Access Protocol (SOAP) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks It relies on XML Information Set for its message format and usually relies on other Application Layer protocols most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP) for message negotiation and transmission
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Service oriented architectureSOA is a software design and architecture based on having independent modules communicating between each other through services to build monitorable scalable reusable stateless loosely coupled components and platforms
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Jeff Bezos
1 All teams will expose their data and functionality through service interfaces2 Teams must communicate with each other through these interfaces3 There will be no other form of interprocess communication allowed4 It doesnrsquot matter what technology they use 5 All service interfaces without exception must be designed from the
ground up to be externalizable No exceptions6 Anyone who doesnrsquot do this will be fired7 Thank you have a nice day
Founder and CEO of Amazon
Jeff Bezos sent an email to his colleagues having these words
httpsplusgooglecom112678702228711889851postseVeouesvaVX
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
URL RewritingWhat you call is not what you really call
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
URL rewritingWith URL rewriting the URL and the resource that it leads to can be completely independent of each other In practice theyrsquore usually not wholly independent the URL usually contains some code or number or name that enables the application to look up the resource But in theory this is what URL rewriting provides a complete separation
URL rewriting basically tells the Web server that the called url should show the Web page at an internal url without the customer or search engine knowing about it
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
URL rewritingUser Web Server Application Server
is called by the user Web Server gets the request runs ReWrite Rules and convert
the url into a different one
productsminiflow-gutter-brown11577676
diyjspbqnavjspaction=detailampfh_secondid=11577676is received by the application server
Request is processed and a response is generated and sent
is the url that the user sees the response Even though URL has changed internally
the user is not aware of it
productsminiflow-gutter-brown11577676
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
How do developers develop software
The way of development differs from company to company and team to team for sure But here we try to focus on enterprise level projects which are developed by teams You may
encounter different styles in other companies as well
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
At the very beginning developers develop software by their own No
collaboration That might be fine for some circumstances but it is
unacceptable in an enterprise
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
We build cross functional teams that the members collaborate
and develop as teams
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
Developer Developer Developer
LOCAL
Developer
ContinousIntegration
Repository Manager
Developers
Developers push code to a central version system That
helps developers work on same code at the same time
ContinuousDelivery
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Automated tests are written by developers Continuous integration
server builds all tests to get immediate feedback Whenever a test
fails developers get notified by notification mails or messages
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
CI server deploys snapshots to a centralized repository manager if all the tests pass All packages including
3rd party packages are managed by the repository manager
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Now itrsquos time to deploy our code to servers and make it run You could have several
enterprise environments to deploy and run software for special purposes
Your code is in repository manager as a package if packages are deployed as in Java based applications
Your code is in version control system and could be deployed to servers in text form like in Ruby and PHP
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers develop software run and test in their local machines
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Developers test their software in a separate environment before
sending to Quality Assurance team
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
TestQA machines should be similar to production machines in means of hardware to make tests more reliable There might be more than one test environment for testing
different features
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Staging is the place where customers do UAT SIT and regression tests The data is previewed before being delivered to
production environment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Only super users can deploy to production Production environment
is monitored continuously
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Too much manual effort for deployment That slows down the
whole testing and release process
Letrsquos automate deployments
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
Packages are deployed automatically by a continuous delivery system to serversMost of the time continuous integration
servers do the deployment
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
Super User
DEV TEST amp QA STAGING PROD
VersionControlSystem
ContinuousDelivery
Developer Developer Developer
LOCAL
Developer
ContinuousIntegration
Repository Manager
Developers
It is also possible to deploy code directly from version control system to servers
For instance whenever developers push a code to version control system the code
could be deployed to development servers
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Notification Services (email messaging)
DevOps
VersionControlSystem
ContinuousDelivery
DevOps DevOps DevOps
LOCAL
DevOps
ContinuousIntegration
Repository Manager
Developers
You dont need servers to maintainyou need just a cloud DevOps are the
ones who manages both infrastructural and development requirements
VersionControlSystem
This flow is the one we use for Heroku (ie cloud platform as a service) for deploying and running the software Please note that each cloud solution
has its own way of deploying software
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
References
RESTful Web ServiceshttpwwwcrummycomwritingRESTful-Web-Services
httpwwwibmcomdeveloperworkswebserviceslibraryws-restful
Web ServiceshttpsearchsoatechtargetcomdefinitionWeb-services
Url ReWritinghttpcodingsmashingmagazinecom20111102introduction-to-url-rewriting
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom
Lemİ orhan ergİnlemiorhanagilistanbulcom
lemiorhan
lemiorhan
agilistanbulcom
lemiorhan
LINKE
DIN
TWITT
ERSL
IDES
HARE
BLOG
GER
Principal Software Engineer SonyFounder amp Author agilistanbulcom
flyingtomooncom