SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
Introducing Luup




        BizTalk Used for Real Time Payments


      Luup provides payment services for mobile phones in emerging markets in Asia and the Middle East. This presentation will
      discuss challenges in building a mobile payment platform, which supports high transaction volumes and a minimum of
      latency, using BizTalk for internal workflow services in a SOA architecture.




© Luup International Ltd.                                        #1
Introducing Luup
                  Topics

  • Introduction to Luup
          –     Real-time Payments
          –     The Luup System Platform
          –     The Main Architectural Driving Factors
          –     How Luup Uses BizTalk
          –     The Development Teams
  • Our Experiences and Challenges With BizTalk
          –     Performance
          –     Consistency
          –     Maintainability
          –     Automated Testing
          –     Automated Deployment
© Luup International Ltd.                #2
Introducing Luup
                               Luup

  •     Started in Norway > 10 years ago
  •     Development in Oslo, HQ in London, Sales Office in Dubai
  •     Experience with several mobile payment products
  •     Main product is a global remittance eco-system
  •     Offers bank-grade mobile payment solutions
  •     A managed service
  •     An integrated banking platform
  •     Our projects are centered around:
        - Integration towards new partners and customers
        - Make business processes work on our standard platform
        - UI: SMS, Mobile App and Web


© Luup International Ltd.         #3
Introducing Luup
       Real-time Payments Examples

  • Remittances - customers send money to their
    families conveniently, quickly and securely
    using their mobile devices
  • Domestic Payments - customers pay people,
    bills, charities and merchants
  • Disbursements - customers receive their
    wages or social benefits into an account linked
    to their mobile device

© Luup International Ltd.   #4
Introducing Luup Driving
               Factors
                            Architectural Decisions

  • Decided to use standard software as much as
    possible (came from a history where
    everything was in-house and custom made)
  • Robust orchestration of services is important
  • Building a scalable platform is vital, since our
    business model relies on a high volume of
    transactions to be profitable


© Luup International Ltd.             #5
Introducing Luup
             The Luup Platform


                     Luup Payment Processing Platform
         Employee UI           End user UI            SMS
          web site        web site / web services    server            Telco
            Q                     Q                  Q
                  of ser ration




                 Q                     Q                  Q
                               BizTalk
                        vices
                         st




                              MsgBox        Partner
                                             Partner               Bank web
                                              Partner
                   Orche




                 Core/BPM                  Gateway                  services
                               MsgBox       Gateway
                                             Gateway

                       http            http                         In
                                                                 Ty teg
                                                              Bi pic rat
                                                                zT al io
                                     Luup                         al      n
         Core banking                                               k usa –
            system                  Services                             ge
                                                                            of
© Luup International Ltd.                         #6
Introducing Luup
              The Luup Team

  • Our internal developers:
          – Had no experience with BizTalk 2 years ago
          – Were mostly experienced .Net developers –
            learned quickly
          – Now this background helps in deciding whether
            code should be made in BizTalk shapes, C#
            components or services
  • Offshore team with 3-5 developers:
          – Developed the Core/BPM application
© Luup International Ltd.       #7
Introducing Luup
            End of Introduction


  • Now over to challenges we have faced and
    experiences made during the last 2 years




© Luup International Ltd.   #8
IntroducingExperiences and Challenges
       Luup’s Luup
                            in Using BizTalk

  •     Introduction
  •     Performance
  •     Consistency
  •     Maintainability
  •     Automated Testing
  •     Automated Deployment


© Luup International Ltd.          #9
Introducing Luup
         The Luup Platform - Recap


                     Luup Payment Processing Platform
         Employee UI               End user UI            SMS
          web site            web site / web services    server      Telco
            Q    Q                    Q    Q             Q
                                                              Q
                                   BizTalk
                                   MsgBox      Partner
                                                Partner           Bank web
                                                 Partner
                 Core/BPM                      Gateway
                                                Gateway            services
                                   MsgBox        Gateway

                       http             http


         Core banking                Luup
            system                  Services

© Luup International Ltd.                          #10
Introducing Luup




       PERFORMANCE


© Luup International Ltd.   #11
Introducing Luup
                Challenges

  • Complex business process orchestrations
          – Many (10-20) web service calls in each workflow
                   • Important for our design choices
  • Low latency required for some scenarios
          – Serve requests from web and mobile app
            frontends
  • Performance tuning of BT is complicated!
          – Each system/setup is unique

© Luup International Ltd.                 #12
Introducing Luup
           Current Configuration

  • Shared server for Partner Gateway and BPM
  • Active-Passive cluster
          – Due to licence costs, until the number of
            transactions increases
  • Separate hosts for receiving, sending and
    processing
  • We use the defaults for most settings


© Luup International Ltd.         #13
Introducing Luup
           Design Considerations

  • The database will be our bottleneck
          – The database is the hardest component to scale
          – We need to limit database roundtrips




© Luup International Ltd.        #14
Introducing Luup
              Latency Example

  • Message box round trips (polling every 0,5s):
          – If 10 service calls:
                   • Adapter polls for messages to send, orchestration polls
                     for response messages
                   • 10 requests and 10 responses = 20 msg box roundtrips
          – 20 msg box roundtrips * 0,25 sec = 5 sec
            (for polling msg box only)
          – If 1 sec used on actual processing: 5 + 1 = 6 sec
  • How can we avoid this latency?
© Luup International Ltd.                  #15
Introducing Luup
        Low Latency Considerations

  • Alternatives for calling web services from
    workflows
          – WCF Adapters
                   • Polling interval can be tuned down to 50 ms
          – Use .Net code – «Service Caller»
                   • Used in our solution




© Luup International Ltd.                   #16
Introducing Luup
               Using Adapters

  • Pros
          – The default and recommended way when using
            BizTalk
  • Cons
          – Orchestration is persisted for each web service
            call
          – Message Box roundtrips for request and response
            message

© Luup International Ltd.       #17
Introducing Luup
            The «Service Caller»

  • Uses C# code to do SOAP calls
  • Two versions:
          – Old version using WebRequest
          – New version using WCF
  • We only use it in the CORE/BPM application
          – Only calls to locally deployed services
  • We use BAM for logging requests and
    responses
© Luup International Ltd.          #18
Introducing Luup
         Service Caller - Advantages

  • Low latency and DB load
          – No message box roundtrips
          – Orchestration is not persisted after the request is
            sent




© Luup International Ltd.         #19
Introducing Luup
       Service Caller - Disadvantages

  • Need to be careful about when the
    orchestration is persisted
          – When replaying request we need to use the
            original request ids
          – Generate request ids up-front and start using the
            service caller after the ids have been persisted




© Luup International Ltd.         #20
Introducing Luup
       Service Caller - Disadvantages

  • We take control of resource usage throttling
    away from BizTalk
          – Threads are used while waiting for web service
            replies
          – Use short timeouts (< 60s) and short retry
            intervals




© Luup International Ltd.        #21
Introducing Luup
         Summarizing Performance

  • Performance tuning BizTalk is hard and time
    consuming
  • Using .Net code to call web services has
    improved our latency
  • We need to focus on performance in the near
    future as the number transactions increases



© Luup International Ltd.   #22
Introducing Luup




       CONSISTENCY


© Luup International Ltd.   #23
Introducing Luup
                Consistency


                     Luup Payment Processing Platform
         Employee UI               End user UI                      SMS
          web site            web site / web services              server      Telco
            Q    Q                    Q    Q                       Q
                                                                        Q
                                   BizTalk
                                   MsgBox                 Partner
                                                           Partner          Bank web
                                                            Partner
                 Core/BPM                                 Gateway
                                                           Gateway           services
                                   MsgBox                   Gateway

                       http                 http
                                      called with serv
                                      Inside circle: Id




         Core banking                Luup
            system                  Services

© Luup International Ltd.                                    #24
Introducing Luup
                Consistency


                     Luup Payment Processing Platform
         Employee UI               End user UI               SMS
          web site            web site / web services       server      Telco
            Q    Q                    Q    Q                Q
                                                                 Q
                                   BizTalk
                                   MsgBox          Partner
                                                    Partner          Bank web
                                                     Partner
                 Core/BPM                          Gateway
                                                    Gateway           services
                                   MsgBox            Gateway

                       http              http
                                       Throug




         Core banking                Luup
            system                  Services
                                             h
                                         circle:




© Luup International Ltd.                             #25
                                            A
Introducing Luup




       MAINTAINABILITY


© Luup International Ltd.   #26
Introducing Luup
           Size of Orchestrations

  • Complex business logic gives complex
    orchestrations
          – Results in orchestrations which are hard to:
                   • Understand
                   • Change
                   • Test




© Luup International Ltd.         #27
Introducing Luup
             Shapes vs C# Code

  • Use shapes as much as possible?
          – Results in huge orchestrations which are
                   • Hard to test
                   • Hard to read
                   • Has duplicated logic
          – Pros
                   • All the logic is visible in the orchestration designer and
                     debugger
          – Call Orchestration can be used to split out
            orchestration parts

© Luup International Ltd.                   #28
Introducing Luup
              Shapes Example




© Luup International Ltd.   #29
Introducing Luup
             Shapes vs C# Code

  • Or use C# code as much as possible?
          – Keeps the orchestrations dense and focused
          – Use the orchestration only for controlling the
            transaction (at a high level)
                   • Which is the main reason why we needed BizTalk
          – C# code is easy to unit test




© Luup International Ltd.                #30
Introducing Luup
          Using Internal Contracts

  • Vital for having a clean modular architecture
  • Hide gory details from external systems
          – Internal contracts which are easier to understand
                   • Mapping complex external contracts
                   • Greatly improves maintainability
          – Anti-corruption layers
                   • Keeps the core stable even when external services
                     change
  • Small and reusable orchestrations
© Luup International Ltd.                 #31
Introducing Luup
          Using Internal Contracts


                     Luup Payment Processing Platform
         Employee UI               End user UI            SMS
          web site            web site / web services    server      Telco
            Q    Q                    Q    Q             Q
                                                              Q
                                   BizTalk
                                   MsgBox      Partner
                                                Partner           Bank web
                                                 Partner
                 Core/BPM                      Gateway
                                                Gateway            services
                                   MsgBox        Gateway

                       http             http


         Core banking                Luup
            system                  Services

© Luup International Ltd.                          #32
Introducing Luup
          Using Internal Contracts




                                     Contracts




                                                       Contracts
                       Reusable
                    orchestrations
                      Contracts




© Luup International Ltd.                        #33
Introducing Luup
        Summarizing Maintainability

  • Keep orchestrations small
  • Don’t be afraid of using C# code
          – But be careful about orchestration persistence
            when changing state in C# code
  • Use internal contracts




© Luup International Ltd.        #34
Introducing Luup

                            I don’t usually test my
                            code.

                            But when I do,
                            I do it in Production.

       AUTOMATED TESTS


© Luup International Ltd.     #35
Introducing Luup
         Unit and Integration Tests

  • Using unit tests for
          – Maps
          – C# code


  • Integration tests
          – Using BizUnit for testing orchestrations




© Luup International Ltd.         #36
Introducing Luup
    Testing Maps – The Built-in Test Func




© Luup International Ltd.   #37
Introducing Luup
    Testing Maps – The Built-in Test Func

  • Disadvantages of built-in test functionality:
          – Compiles maps inheriting from test base class
                   • References test assembly
                     Microsoft.BizTalk.TestTools.dll which must be
                     deployed to production
          – Exceptions are swallowed
                   • Hard to figure out why a test failed




© Luup International Ltd.                   #38
Introducing Luup
        Testing Maps – Our Solution

  • Custom-made library
  • Calls XLANG component to do transformation
  • Fluent language for writing assertions




© Luup International Ltd.   #39
Introducing Luup
        Testing Maps – Our Solution




                                                  Schema validation




                                  Field validations

© Luup International Ltd.   #40
Introducing Luup
           Testing Orchestrations

  • Complex workflows
          – Requires automated tests
  • Custom made fluent interface on top of
    BizUnit
          – Reuse of code
          – Terse tests which are refactor-friendly
  • Currently we have around 350 BizUnit
    orchestration tests
© Luup International Ltd.         #41
Introducing Luup
          Testing Orchestrations - Example
[Test]
public void RemittanceSend_WhenInvalidBankTransactionDate_ShouldReturnGeneralError()
{
    const string invalidTransactionDate = "12/24/2012";
    var testCase = new BizUnitTestCaseBuilder()
        .WithTestCaseSteps(SharedTestSteps.CreateAndCleanupDirectories()) Initialize the test input file
        .WithCreateXmlFileStep(
                  new CreateXmlFileStepBuilder(@"TestDataMtoRemittanceSendRequest_ToAccount.xml",
                                                SharedConstants.Pgw.ReceiveDirectory +
                                                TestContext.CurrentContext.Test.Name + ".xml")
            .WithUpdateXml("SenderBankTransactionDate", invalidTransactionDate,
                           "//*[local-name()='SenderBankTransactionDate']")
            )
                                                                                Wait for orchestration
        .WithWaitForFileStep(SharedConstants.Pgw.SendDirectory)                 execution to finish
        .WithXmlFileValidation(new XmlFileValidationBuilder(SharedConstants.Pgw.SendDirectory)

.WithSchemaValidation(@"......SharedBizTalkSchemasPartnerGatewayMtoRemittanceSendResponse.xsd",
                    "http://www.luup.com/schemas/")
                .WithXPathValidation("ErrorId", MtoRemittanceSendResultCode.GeneralFailure.ToString(),
                  "//*[local-name()='ErrorId']")
            )
        .Build();
                                                                        Verify the result message

      var bizUnit = new BizUnit.BizUnit(testCase);
      bizUnit.RunTest();
}
    © Luup International Ltd.                        #42
Introducing Luup
          Build Server Integration

  • After each code checkin:
          – Build packages
          – Deploy all BizTalk applications to a dedicated
            BizUnit server
          – Run BizUnit integration tests




© Luup International Ltd.         #43
Introducing Luup
      Summarizing Automated Testing

  • The built-in unit testing functionality for maps
    is no good
          – Using BizUnit is a better choice
  • Both maps and orchestrations can and should
    have automated tests
  • Build server runs automated tests



© Luup International Ltd.         #44
Introducing Luup
                                                                      Test Environments
                                       TFS
                                                       Build
                                      Source
                                                      Servers
                                      Control

                             Code
                            Changes                             Deployment

                                                                             Production




       AUTOMATED DEPLOYMENT


© Luup International Ltd.                       #45
Introducing Luup
        Our Deployment Challenges

  • Our solution consists of about 20 BizTalk
    applications
  • 9 test environments
  • Time consuming deployments to Production




© Luup International Ltd.   #46
Introducing Luup
         How We Do Deployments

  • Each application use BizTalk Deployment
    Framework (BTDF)
  • Using the Sprinkler framework to control
    deployment of multiple applications
  • The build server creates installation packages
    each time we check in code
          – Also deploys and runs BizUnit integration tests
  • Automated deployments to test environments
© Luup International Ltd.         #47
Introducing Luup
         The Sprinkler Framework

  • Open source on CodePlex
  • A set of PowerShell script built on top of BTDF
  • A bit immature
          – We had to make a couple of changes to the scripts
            in order to make it work with Active-Passive
            clusters
  • Great when having multiple applications and
    servers
  • Great for automated deployment
© Luup International Ltd.        #48
Introducing Luup
          Deploying to Production

  • Active-passive cluster
  • Using Sprinkler for parallel deployment to the
    nodes
  • IT Ops handle deployment
          – Developers should not touch the Production
            environment




© Luup International Ltd.       #49
Introducing Luup
    Summarizing Automated Deployment

  • BTDF and Sprinkler are good frameworks
  • Automate your deployments
  • Use the same binaries when deploying to test
    and production
  • Deploy early and often




© Luup International Ltd.   #50
Introducing Luup
               Main Summary

  • Flexible and scalable solution
  • Usage of BizTalk both as a traditional integration tool
    and orchestration of services
  • Reduce latency by reducing message box roundtrips
  • Improve maintainability by creating a modularized
    architecture with clean interfaces
  • Testing of maps and orchestrations can and should be
    automated
  • Automated deployment is useful when having many
    BizTalk applications

© Luup International Ltd.     #51
Introducing Luup
                Questions?




© Luup International Ltd.   #52

Mais conteúdo relacionado

Destaque

When blockchain isn’t the answer – audio coding Bagz.it - Tim Hegarty, Bagz.it
When blockchain isn’t the answer – audio coding Bagz.it  - Tim Hegarty, Bagz.it When blockchain isn’t the answer – audio coding Bagz.it  - Tim Hegarty, Bagz.it
When blockchain isn’t the answer – audio coding Bagz.it - Tim Hegarty, Bagz.it MME 4.5 / Music 4.5 / 2Pears
 
Securing Mobile Payments
Securing Mobile PaymentsSecuring Mobile Payments
Securing Mobile PaymentsE Radar
 
Luup Presentation on Mobile Finance trends
Luup Presentation on Mobile Finance trendsLuup Presentation on Mobile Finance trends
Luup Presentation on Mobile Finance trendsChris Skinner
 
Casino Gateway | Investing In iGaming Excellence
Casino Gateway | Investing In iGaming ExcellenceCasino Gateway | Investing In iGaming Excellence
Casino Gateway | Investing In iGaming ExcellenceCasinoGateway
 
The Ultimate Guide to Phone Bill Deposits
The Ultimate Guide to Phone Bill DepositsThe Ultimate Guide to Phone Bill Deposits
The Ultimate Guide to Phone Bill DepositsDroid Slots
 
MeaWallet Company V3.11
MeaWallet Company V3.11MeaWallet Company V3.11
MeaWallet Company V3.11Lars Sandtorv
 
表現学習時代の生成語彙論ことはじめ
表現学習時代の生成語彙論ことはじめ表現学習時代の生成語彙論ことはじめ
表現学習時代の生成語彙論ことはじめYuya Unno
 

Destaque (10)

When blockchain isn’t the answer – audio coding Bagz.it - Tim Hegarty, Bagz.it
When blockchain isn’t the answer – audio coding Bagz.it  - Tim Hegarty, Bagz.it When blockchain isn’t the answer – audio coding Bagz.it  - Tim Hegarty, Bagz.it
When blockchain isn’t the answer – audio coding Bagz.it - Tim Hegarty, Bagz.it
 
Securing Mobile Payments
Securing Mobile PaymentsSecuring Mobile Payments
Securing Mobile Payments
 
Luup Presentation on Mobile Finance trends
Luup Presentation on Mobile Finance trendsLuup Presentation on Mobile Finance trends
Luup Presentation on Mobile Finance trends
 
ICE advert
ICE advertICE advert
ICE advert
 
Mobile Finacial Services
Mobile Finacial Services Mobile Finacial Services
Mobile Finacial Services
 
Casino Gateway | Investing In iGaming Excellence
Casino Gateway | Investing In iGaming ExcellenceCasino Gateway | Investing In iGaming Excellence
Casino Gateway | Investing In iGaming Excellence
 
The Ultimate Guide to Phone Bill Deposits
The Ultimate Guide to Phone Bill DepositsThe Ultimate Guide to Phone Bill Deposits
The Ultimate Guide to Phone Bill Deposits
 
The State of Payments in Asia
The State of Payments in Asia The State of Payments in Asia
The State of Payments in Asia
 
MeaWallet Company V3.11
MeaWallet Company V3.11MeaWallet Company V3.11
MeaWallet Company V3.11
 
表現学習時代の生成語彙論ことはじめ
表現学習時代の生成語彙論ことはじめ表現学習時代の生成語彙論ことはじめ
表現学習時代の生成語彙論ことはじめ
 

Semelhante a Integration daysBizTalk Used for Real Time Payments

Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...
Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...
Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...Nagios
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration SimplifiedRich Software
 
NZ Post - Mulesoft Summit presentation
NZ Post - Mulesoft Summit presentationNZ Post - Mulesoft Summit presentation
NZ Post - Mulesoft Summit presentationMichael Brosnahan
 
Nimsoft Web performance monitoring
Nimsoft Web performance monitoringNimsoft Web performance monitoring
Nimsoft Web performance monitoringnlwebperf
 
The CIBER / CA partnership & Why CIBER is moving to Nimsoft Monitor
The CIBER / CA partnership & Why CIBER is moving to Nimsoft MonitorThe CIBER / CA partnership & Why CIBER is moving to Nimsoft Monitor
The CIBER / CA partnership & Why CIBER is moving to Nimsoft Monitor CA Nimsoft
 
Dubbo and Weidian's practice on micro-service architecture
Dubbo and Weidian's practice on micro-service architectureDubbo and Weidian's practice on micro-service architecture
Dubbo and Weidian's practice on micro-service architectureHuxing Zhang
 
Juha Kukka - Enfo
Juha Kukka - EnfoJuha Kukka - Enfo
Juha Kukka - EnfoIBM Sverige
 
Innovation in the network – Adding value to voice OpenCloud Bouygues
Innovation in the network – Adding value to voice OpenCloud BouyguesInnovation in the network – Adding value to voice OpenCloud Bouygues
Innovation in the network – Adding value to voice OpenCloud BouyguesAlan Quayle
 
Cloud Foundry Marketplace
Cloud  Foundry MarketplaceCloud  Foundry Marketplace
Cloud Foundry MarketplaceLayne Peng
 
Nasscom Presentation Microservices Database Architecture By Tudip
Nasscom Presentation  Microservices Database Architecture By TudipNasscom Presentation  Microservices Database Architecture By Tudip
Nasscom Presentation Microservices Database Architecture By TudipArti Kadu
 
MuleSoft Meetup Valletta 1.0
MuleSoft Meetup Valletta  1.0MuleSoft Meetup Valletta  1.0
MuleSoft Meetup Valletta 1.0Anastasiia Linnas
 
Open mic mediaarchitecture_121113
Open mic mediaarchitecture_121113Open mic mediaarchitecture_121113
Open mic mediaarchitecture_121113a8us
 
Architecting an ibm sametime 9.0 audio visual deployment
Architecting an ibm sametime 9.0 audio visual deploymentArchitecting an ibm sametime 9.0 audio visual deployment
Architecting an ibm sametime 9.0 audio visual deploymenta8us
 
Seize the Cloud - Proven Tactics From a Successful Service Provider
Seize the Cloud - Proven Tactics From a Successful Service ProviderSeize the Cloud - Proven Tactics From a Successful Service Provider
Seize the Cloud - Proven Tactics From a Successful Service ProviderCA Nimsoft
 
Upperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-finalUpperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-finalAmir Zmora
 
Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014
Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014
Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014Exponential_e
 
The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015Eduardo Pelegri-Llopart
 

Semelhante a Integration daysBizTalk Used for Real Time Payments (20)

Subhajit ghosh
Subhajit ghoshSubhajit ghosh
Subhajit ghosh
 
Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...
Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...
Nagios Conference 2014 - Paloma Galan - Monitoring Financial Protocols With N...
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration Simplified
 
NZ Post - Mulesoft Summit presentation
NZ Post - Mulesoft Summit presentationNZ Post - Mulesoft Summit presentation
NZ Post - Mulesoft Summit presentation
 
Nimsoft Web performance monitoring
Nimsoft Web performance monitoringNimsoft Web performance monitoring
Nimsoft Web performance monitoring
 
The CIBER / CA partnership & Why CIBER is moving to Nimsoft Monitor
The CIBER / CA partnership & Why CIBER is moving to Nimsoft MonitorThe CIBER / CA partnership & Why CIBER is moving to Nimsoft Monitor
The CIBER / CA partnership & Why CIBER is moving to Nimsoft Monitor
 
Dubbo and Weidian's practice on micro-service architecture
Dubbo and Weidian's practice on micro-service architectureDubbo and Weidian's practice on micro-service architecture
Dubbo and Weidian's practice on micro-service architecture
 
Juha Kukka - Enfo
Juha Kukka - EnfoJuha Kukka - Enfo
Juha Kukka - Enfo
 
Innovation in the network – Adding value to voice OpenCloud Bouygues
Innovation in the network – Adding value to voice OpenCloud BouyguesInnovation in the network – Adding value to voice OpenCloud Bouygues
Innovation in the network – Adding value to voice OpenCloud Bouygues
 
Cloud Foundry Marketplace
Cloud  Foundry MarketplaceCloud  Foundry Marketplace
Cloud Foundry Marketplace
 
Nasscom Presentation Microservices Database Architecture By Tudip
Nasscom Presentation  Microservices Database Architecture By TudipNasscom Presentation  Microservices Database Architecture By Tudip
Nasscom Presentation Microservices Database Architecture By Tudip
 
MuleSoft Meetup Valletta 1.0
MuleSoft Meetup Valletta  1.0MuleSoft Meetup Valletta  1.0
MuleSoft Meetup Valletta 1.0
 
Open mic mediaarchitecture_121113
Open mic mediaarchitecture_121113Open mic mediaarchitecture_121113
Open mic mediaarchitecture_121113
 
GEETHA LAKSHMI M
GEETHA LAKSHMI MGEETHA LAKSHMI M
GEETHA LAKSHMI M
 
Architecting an ibm sametime 9.0 audio visual deployment
Architecting an ibm sametime 9.0 audio visual deploymentArchitecting an ibm sametime 9.0 audio visual deployment
Architecting an ibm sametime 9.0 audio visual deployment
 
Seize the Cloud - Proven Tactics From a Successful Service Provider
Seize the Cloud - Proven Tactics From a Successful Service ProviderSeize the Cloud - Proven Tactics From a Successful Service Provider
Seize the Cloud - Proven Tactics From a Successful Service Provider
 
Upperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-finalUpperside Webinar- WebRTC from the service provider prism-final
Upperside Webinar- WebRTC from the service provider prism-final
 
Rma past present_v3
Rma past present_v3Rma past present_v3
Rma past present_v3
 
Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014
Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014
Exponential-e | Cloud Revolution Seminar at the Ritz, 20th November 2014
 
The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015
 

Último

Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 

Último (20)

Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 

Integration daysBizTalk Used for Real Time Payments

  • 1. Introducing Luup BizTalk Used for Real Time Payments Luup provides payment services for mobile phones in emerging markets in Asia and the Middle East. This presentation will discuss challenges in building a mobile payment platform, which supports high transaction volumes and a minimum of latency, using BizTalk for internal workflow services in a SOA architecture. © Luup International Ltd. #1
  • 2. Introducing Luup Topics • Introduction to Luup – Real-time Payments – The Luup System Platform – The Main Architectural Driving Factors – How Luup Uses BizTalk – The Development Teams • Our Experiences and Challenges With BizTalk – Performance – Consistency – Maintainability – Automated Testing – Automated Deployment © Luup International Ltd. #2
  • 3. Introducing Luup Luup • Started in Norway > 10 years ago • Development in Oslo, HQ in London, Sales Office in Dubai • Experience with several mobile payment products • Main product is a global remittance eco-system • Offers bank-grade mobile payment solutions • A managed service • An integrated banking platform • Our projects are centered around: - Integration towards new partners and customers - Make business processes work on our standard platform - UI: SMS, Mobile App and Web © Luup International Ltd. #3
  • 4. Introducing Luup Real-time Payments Examples • Remittances - customers send money to their families conveniently, quickly and securely using their mobile devices • Domestic Payments - customers pay people, bills, charities and merchants • Disbursements - customers receive their wages or social benefits into an account linked to their mobile device © Luup International Ltd. #4
  • 5. Introducing Luup Driving Factors Architectural Decisions • Decided to use standard software as much as possible (came from a history where everything was in-house and custom made) • Robust orchestration of services is important • Building a scalable platform is vital, since our business model relies on a high volume of transactions to be profitable © Luup International Ltd. #5
  • 6. Introducing Luup The Luup Platform Luup Payment Processing Platform Employee UI End user UI SMS web site web site / web services server Telco Q Q Q of ser ration Q Q Q BizTalk vices st MsgBox Partner Partner Bank web Partner Orche Core/BPM Gateway services MsgBox Gateway Gateway http http In Ty teg Bi pic rat zT al io Luup al n Core banking k usa – system Services ge of © Luup International Ltd. #6
  • 7. Introducing Luup The Luup Team • Our internal developers: – Had no experience with BizTalk 2 years ago – Were mostly experienced .Net developers – learned quickly – Now this background helps in deciding whether code should be made in BizTalk shapes, C# components or services • Offshore team with 3-5 developers: – Developed the Core/BPM application © Luup International Ltd. #7
  • 8. Introducing Luup End of Introduction • Now over to challenges we have faced and experiences made during the last 2 years © Luup International Ltd. #8
  • 9. IntroducingExperiences and Challenges Luup’s Luup in Using BizTalk • Introduction • Performance • Consistency • Maintainability • Automated Testing • Automated Deployment © Luup International Ltd. #9
  • 10. Introducing Luup The Luup Platform - Recap Luup Payment Processing Platform Employee UI End user UI SMS web site web site / web services server Telco Q Q Q Q Q Q BizTalk MsgBox Partner Partner Bank web Partner Core/BPM Gateway Gateway services MsgBox Gateway http http Core banking Luup system Services © Luup International Ltd. #10
  • 11. Introducing Luup PERFORMANCE © Luup International Ltd. #11
  • 12. Introducing Luup Challenges • Complex business process orchestrations – Many (10-20) web service calls in each workflow • Important for our design choices • Low latency required for some scenarios – Serve requests from web and mobile app frontends • Performance tuning of BT is complicated! – Each system/setup is unique © Luup International Ltd. #12
  • 13. Introducing Luup Current Configuration • Shared server for Partner Gateway and BPM • Active-Passive cluster – Due to licence costs, until the number of transactions increases • Separate hosts for receiving, sending and processing • We use the defaults for most settings © Luup International Ltd. #13
  • 14. Introducing Luup Design Considerations • The database will be our bottleneck – The database is the hardest component to scale – We need to limit database roundtrips © Luup International Ltd. #14
  • 15. Introducing Luup Latency Example • Message box round trips (polling every 0,5s): – If 10 service calls: • Adapter polls for messages to send, orchestration polls for response messages • 10 requests and 10 responses = 20 msg box roundtrips – 20 msg box roundtrips * 0,25 sec = 5 sec (for polling msg box only) – If 1 sec used on actual processing: 5 + 1 = 6 sec • How can we avoid this latency? © Luup International Ltd. #15
  • 16. Introducing Luup Low Latency Considerations • Alternatives for calling web services from workflows – WCF Adapters • Polling interval can be tuned down to 50 ms – Use .Net code – «Service Caller» • Used in our solution © Luup International Ltd. #16
  • 17. Introducing Luup Using Adapters • Pros – The default and recommended way when using BizTalk • Cons – Orchestration is persisted for each web service call – Message Box roundtrips for request and response message © Luup International Ltd. #17
  • 18. Introducing Luup The «Service Caller» • Uses C# code to do SOAP calls • Two versions: – Old version using WebRequest – New version using WCF • We only use it in the CORE/BPM application – Only calls to locally deployed services • We use BAM for logging requests and responses © Luup International Ltd. #18
  • 19. Introducing Luup Service Caller - Advantages • Low latency and DB load – No message box roundtrips – Orchestration is not persisted after the request is sent © Luup International Ltd. #19
  • 20. Introducing Luup Service Caller - Disadvantages • Need to be careful about when the orchestration is persisted – When replaying request we need to use the original request ids – Generate request ids up-front and start using the service caller after the ids have been persisted © Luup International Ltd. #20
  • 21. Introducing Luup Service Caller - Disadvantages • We take control of resource usage throttling away from BizTalk – Threads are used while waiting for web service replies – Use short timeouts (< 60s) and short retry intervals © Luup International Ltd. #21
  • 22. Introducing Luup Summarizing Performance • Performance tuning BizTalk is hard and time consuming • Using .Net code to call web services has improved our latency • We need to focus on performance in the near future as the number transactions increases © Luup International Ltd. #22
  • 23. Introducing Luup CONSISTENCY © Luup International Ltd. #23
  • 24. Introducing Luup Consistency Luup Payment Processing Platform Employee UI End user UI SMS web site web site / web services server Telco Q Q Q Q Q Q BizTalk MsgBox Partner Partner Bank web Partner Core/BPM Gateway Gateway services MsgBox Gateway http http called with serv Inside circle: Id Core banking Luup system Services © Luup International Ltd. #24
  • 25. Introducing Luup Consistency Luup Payment Processing Platform Employee UI End user UI SMS web site web site / web services server Telco Q Q Q Q Q Q BizTalk MsgBox Partner Partner Bank web Partner Core/BPM Gateway Gateway services MsgBox Gateway http http Throug Core banking Luup system Services h circle: © Luup International Ltd. #25 A
  • 26. Introducing Luup MAINTAINABILITY © Luup International Ltd. #26
  • 27. Introducing Luup Size of Orchestrations • Complex business logic gives complex orchestrations – Results in orchestrations which are hard to: • Understand • Change • Test © Luup International Ltd. #27
  • 28. Introducing Luup Shapes vs C# Code • Use shapes as much as possible? – Results in huge orchestrations which are • Hard to test • Hard to read • Has duplicated logic – Pros • All the logic is visible in the orchestration designer and debugger – Call Orchestration can be used to split out orchestration parts © Luup International Ltd. #28
  • 29. Introducing Luup Shapes Example © Luup International Ltd. #29
  • 30. Introducing Luup Shapes vs C# Code • Or use C# code as much as possible? – Keeps the orchestrations dense and focused – Use the orchestration only for controlling the transaction (at a high level) • Which is the main reason why we needed BizTalk – C# code is easy to unit test © Luup International Ltd. #30
  • 31. Introducing Luup Using Internal Contracts • Vital for having a clean modular architecture • Hide gory details from external systems – Internal contracts which are easier to understand • Mapping complex external contracts • Greatly improves maintainability – Anti-corruption layers • Keeps the core stable even when external services change • Small and reusable orchestrations © Luup International Ltd. #31
  • 32. Introducing Luup Using Internal Contracts Luup Payment Processing Platform Employee UI End user UI SMS web site web site / web services server Telco Q Q Q Q Q Q BizTalk MsgBox Partner Partner Bank web Partner Core/BPM Gateway Gateway services MsgBox Gateway http http Core banking Luup system Services © Luup International Ltd. #32
  • 33. Introducing Luup Using Internal Contracts Contracts Contracts Reusable orchestrations Contracts © Luup International Ltd. #33
  • 34. Introducing Luup Summarizing Maintainability • Keep orchestrations small • Don’t be afraid of using C# code – But be careful about orchestration persistence when changing state in C# code • Use internal contracts © Luup International Ltd. #34
  • 35. Introducing Luup I don’t usually test my code. But when I do, I do it in Production. AUTOMATED TESTS © Luup International Ltd. #35
  • 36. Introducing Luup Unit and Integration Tests • Using unit tests for – Maps – C# code • Integration tests – Using BizUnit for testing orchestrations © Luup International Ltd. #36
  • 37. Introducing Luup Testing Maps – The Built-in Test Func © Luup International Ltd. #37
  • 38. Introducing Luup Testing Maps – The Built-in Test Func • Disadvantages of built-in test functionality: – Compiles maps inheriting from test base class • References test assembly Microsoft.BizTalk.TestTools.dll which must be deployed to production – Exceptions are swallowed • Hard to figure out why a test failed © Luup International Ltd. #38
  • 39. Introducing Luup Testing Maps – Our Solution • Custom-made library • Calls XLANG component to do transformation • Fluent language for writing assertions © Luup International Ltd. #39
  • 40. Introducing Luup Testing Maps – Our Solution Schema validation Field validations © Luup International Ltd. #40
  • 41. Introducing Luup Testing Orchestrations • Complex workflows – Requires automated tests • Custom made fluent interface on top of BizUnit – Reuse of code – Terse tests which are refactor-friendly • Currently we have around 350 BizUnit orchestration tests © Luup International Ltd. #41
  • 42. Introducing Luup Testing Orchestrations - Example [Test] public void RemittanceSend_WhenInvalidBankTransactionDate_ShouldReturnGeneralError() { const string invalidTransactionDate = "12/24/2012"; var testCase = new BizUnitTestCaseBuilder() .WithTestCaseSteps(SharedTestSteps.CreateAndCleanupDirectories()) Initialize the test input file .WithCreateXmlFileStep( new CreateXmlFileStepBuilder(@"TestDataMtoRemittanceSendRequest_ToAccount.xml", SharedConstants.Pgw.ReceiveDirectory + TestContext.CurrentContext.Test.Name + ".xml") .WithUpdateXml("SenderBankTransactionDate", invalidTransactionDate, "//*[local-name()='SenderBankTransactionDate']") ) Wait for orchestration .WithWaitForFileStep(SharedConstants.Pgw.SendDirectory) execution to finish .WithXmlFileValidation(new XmlFileValidationBuilder(SharedConstants.Pgw.SendDirectory) .WithSchemaValidation(@"......SharedBizTalkSchemasPartnerGatewayMtoRemittanceSendResponse.xsd", "http://www.luup.com/schemas/") .WithXPathValidation("ErrorId", MtoRemittanceSendResultCode.GeneralFailure.ToString(), "//*[local-name()='ErrorId']") ) .Build(); Verify the result message var bizUnit = new BizUnit.BizUnit(testCase); bizUnit.RunTest(); } © Luup International Ltd. #42
  • 43. Introducing Luup Build Server Integration • After each code checkin: – Build packages – Deploy all BizTalk applications to a dedicated BizUnit server – Run BizUnit integration tests © Luup International Ltd. #43
  • 44. Introducing Luup Summarizing Automated Testing • The built-in unit testing functionality for maps is no good – Using BizUnit is a better choice • Both maps and orchestrations can and should have automated tests • Build server runs automated tests © Luup International Ltd. #44
  • 45. Introducing Luup Test Environments TFS Build Source Servers Control Code Changes Deployment Production AUTOMATED DEPLOYMENT © Luup International Ltd. #45
  • 46. Introducing Luup Our Deployment Challenges • Our solution consists of about 20 BizTalk applications • 9 test environments • Time consuming deployments to Production © Luup International Ltd. #46
  • 47. Introducing Luup How We Do Deployments • Each application use BizTalk Deployment Framework (BTDF) • Using the Sprinkler framework to control deployment of multiple applications • The build server creates installation packages each time we check in code – Also deploys and runs BizUnit integration tests • Automated deployments to test environments © Luup International Ltd. #47
  • 48. Introducing Luup The Sprinkler Framework • Open source on CodePlex • A set of PowerShell script built on top of BTDF • A bit immature – We had to make a couple of changes to the scripts in order to make it work with Active-Passive clusters • Great when having multiple applications and servers • Great for automated deployment © Luup International Ltd. #48
  • 49. Introducing Luup Deploying to Production • Active-passive cluster • Using Sprinkler for parallel deployment to the nodes • IT Ops handle deployment – Developers should not touch the Production environment © Luup International Ltd. #49
  • 50. Introducing Luup Summarizing Automated Deployment • BTDF and Sprinkler are good frameworks • Automate your deployments • Use the same binaries when deploying to test and production • Deploy early and often © Luup International Ltd. #50
  • 51. Introducing Luup Main Summary • Flexible and scalable solution • Usage of BizTalk both as a traditional integration tool and orchestration of services • Reduce latency by reducing message box roundtrips • Improve maintainability by creating a modularized architecture with clean interfaces • Testing of maps and orchestrations can and should be automated • Automated deployment is useful when having many BizTalk applications © Luup International Ltd. #51
  • 52. Introducing Luup Questions? © Luup International Ltd. #52

Notas do Editor

  1. Robust orch – long running transactions with well defined persistance
  2. The main layers: UI, BizTalk and Services (banking and Luup costom made) Separation between Core and PGW in BizTalk PGW is the typical way of using BT Core is about orchestrating the services in the platform
  3. With traditional .Net C# background our team have probably more focus on automation of tests than many others have. Have a culture where refactoring is the norm.
  4. Questions so far?
  5. BizTalk used as an application server for user interfaces Also batch processing Core/BPM vs. PartnerGateway MessageBox for communication
  6. Complext workflows: Enrichment, limits, quotes, user profiles, booking, call external partners Low latency: &lt; 1 sec response time preferred for web and mobile app frontends SMS response times can be longer Performance tuning: - «Test -&gt; Change -&gt; Retest» cycle needed for each changed parameter - Time consuming
  7. This was how we estimated latency before we started the development and it influenced our design decitions
  8. - When using WebRequest: Default limit of 2 outgoing connections to one host (configurable)
  9. Tacoma Narrows Bridge breaking up
  10. Web service calls require idempotent services Can resubmit previously sent requests Requests from UI applications are volatile The user may close the browser or app Transaction will be processed and shown on the transaction history Each partner integration is different Partner Gateway responsible for handling the partners API
  11. Web service calls require idempotent services Can resubmit previously sent requests Requests from UI applications are volatile The user may close the browser or app Transaction will be processed and shown on the transaction history Each partner integration is different Partner Gateway responsible for handling the partners API
  12. How to make the system look less like spaghetti
  13. Duplicated code Too verbose Would be a better option to use .Net code
  14. Hide external details example: Web service request with over 200 optional fields, where we only use about 30 of the fields Separation of concerns Simplifies testing of a components/orchestrations
  15. Zoomin to a part of the system where we use internal contracts
  16. Contracts creating clear bundaries between different parts of the system Internal contracts and reusable orchestration hides compex external webservices Makes it possible to ”hot deploy” new Partner Gateway applications without redeploying the existing applications
  17. http://dosequis.com/
  18. Enabled in the project’s property page
  19. Microsoft.BizTalk.TestTools.dll must be deployed to test servers and to production You want to execute automated tests on the same code which is deployed to production
  20. Could have used BizUnit for testing maps, but the XML format used for defining tests in version 3 of BizUnit was not appealing to use
  21. Create an instance of the mapping class Create an instance of the target schema, which is used when validating the output. The target schema is embedded into this class. Validate mapped fields
  22. A separate BizTalk test application is reading input message from disk and storing result message to disk
  23. Important with quick feedback to the developers Mitigate slowdowns when someone checks in errors by quickly detecting the error Important when many team members work on the same code base
  24. Binaries from a build is always tested by automated tests on the build servers and in our test environments before they are deployed to Production.
  25. BTDF: BizTalk Deployment Framework
  26. Our developers don’t deploy to test environments and production, and don’t have any access rights to the production environment.