We issue credit cards
"Softbank Card" to
consumers.
Credit Card Issuer
Payment Aggregator
We provide a comprehensive
payment platform that offers
various online payment solutions.
Credit Card Acquirer
We are the only payment aggregator
in Japan who accepts and processes
transactions made with major brands
(VISA/ mastercard/ UnionPay).
Softbank customers can also
pay for online purchases via
their phone bill as Japan’s
leading carrier company.
Carrier Billing Provider
We issue credit cards
"Softbank Card" to consumer.
Credit Card Issuer
Payment Aggregator
We provide a comprehensive
payment platform that offers
various online payment solutions.
Credit Card Acquirer
We are an only payment aggregator
in Japan that accepts and
processes transactions made with a
major brands(VISA/ mastercard/
UnionPay) as an acquirer.
We provide consumers to
pay for online purchases with
their phone bill as Japanese
leading carrier company.
Carrier Billing Provider
If you have any questions, we’d be
happy to answer them at the end of
our presentation
●
●
●
We left all development of our services to
outside vendors.
There were zero in-house engineers writing code.
The development environment was not ready.
Problem
Team
Problem Developed Support Tools
Introduced ToolsTeam
Problem
Team
Developed Support Tools
Introduced Tools
3 Engineers joined!
Accelerated KAIZEN tasks by a team
①
Problem
Team
①
Problem Created dashboards
Introduced Tools
Elasticsearch
Logstash
Kibana
Team
②
Problem
Team
②
Problem Re-architected with Spring
Introduced Tools
 
 
Team
②
Problem Re-architected with Spring
Introduced Tools
 
 
Team One more engineer joined!
●
●
●
Merchants
Financial
Institutions
E-Commerce
Gaming
Education
RealEstate
Etc
E-Books/Movies
Unified
Payment Service
Tickets
Provides several payment methods as API to EC sites
Credit Card
Mobile Carrier
Convenience Store
Prepaid Card
Account Transfer
Point
Account Integration
当社Our Company
API
Development target
Online Payment Service
Merchants
Financial
Institutions
E-Commerce
Gaming
Education
RealEstate
Etc
E-Books/Movies
Unified
Payment Service
Tickets
Provides several payment methods as API to EC sites
Credit Card
Mobile Carrier
Convenience Store
Prepaid Card
Account Transfer
Point
Account Integration
当社Our Company
API
Development target
Online Payment Service
Number of adoption
111,742 stores
(As of May 2019)
Transaction Amount
$ 28 billion
(As of 2018)
Merchants
Financial
Institutions
E-Commerce
Game
Education
RealEstate
Etc
E-Book/Movie
Unified
Payment Service
Ticket
Provides several payment methods as API to EC sites
Credit Card
Mobile Carrier
Convenience Store
Prepaid Card
Account Transfer
Point
Account Integration
当社Our Company
API
Development target
Online Payment Service
40+ payment methods
supported
Merchants
Financial
Institutions
E-Commerce
Gaming
Education
RealEstate
Etc
E-Books/Movies
Unified
Payment Service
Tickets
Provides several payment methods as API to EC sites
Credit Card
Mobile Carrier
Convenience Store
Prepaid Card
Account Transfer
Point
Account Integration
当社Our Company
API
Development target
Online Payment Service
Located between merchant systems
and financial institution systems
Requirements for the new system
●
●
●
Before…
Every project was lead by external vendors
(A long path from estimation / contract /
requirement definition to
acceptance)
Requirements for the new system
●
●
●
今までは…
案件毎に開発ベンダさんのチカラを借りて構築
(見積もり/要件定義から検収まで長い道のり)
Outsourcing made it impossible to deliver
incrementally and quickly in the agile way.
Requirements for the new system
●
●
●
Speedy delivery and
Continuous improvement
through in-house development
Team
In-house dev PJ
One more engineer joined!
6-person team
Introduced Tools
Cloud Native Platform
based on Pivotal Platform
・
・
??
・
・
・
??
What we needed
・
・
●
●
●
●
●
●
Buildpack converts source code to a container image.
Developers don’t need to write a Dockerfile.
cf push + Buildpack reduces extra works!
Team structure and responsibility boundary
Team structure and responsibility boundaryTeam structure and responsibility boundary
Networking
Storage
Servers
Virtualization
O/S
Middleware
Runtime
Platform Operators
2 people
Team structure and responsibility boundary
Networking
Storage
Servers
Virtualization
O/S
Middleware
Runtime
Data
Application
Application Developers
4 people
Platform Operators
2 people
Networking
Storage
Servers
Virtualization
O/S
Middleware
Runtime
Data
Application
Focus on building and
operating platforms
Application Developers
4 people
Platform Operators
2 people
Team structure and responsibility boundary
Networking
Storage
Servers
Virtualization
O/S
Middleware
Runtime
Data
Application
Focus on design and
implementation of
business code
Team structure and responsibility boundary
Application Developers
4 people
Platform Operators
2 people
Networking
Storage
Servers
Virtualization
O/S
Middleware
Runtime
Data
Application
12 Factor App The only contract is
“12 Factor App”.
No vendor lock in.
Application Developers
4 people
Team structure and responsibility boundary
Platform Operators
2 people
➢
➢
➢
➢
syslog+TLS
Logstash
Elasticsearch
Kibana
cf pushConcourse
PrometheusGrafana
git push
cf create-service
cf bind-service
➢
➢
➢
➢
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
、 、 、
、
( ➡ )
API
Gateway
Service A
Service B
Service C
Financial
Institution A
Financial
Institution B
Financial
Institution C
Merchant X
Merchant Y
Merchant Z
( ➡ )
API
Gateway
Service A
Service B
Service C
Financial
Institution A
Financial
Institution B
Financial
Institution C
Merchant X
Merchant Y
Merchant Z
、 、
、
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Financial
Institution A
Financial
Institution B
Financial
Institution C
Merchant X
Merchant Y
Merchant Z
Each app is deployed on PAS as
a microservice
( ➡ )
API
Gateway
Service A
Service B
Service C
Financial
Institution A
Financial
Institution B
Financial
Institution C
Merchant X
Merchant Y
Merchant Z
Each app is implemented
with Java and Spring Boot
( ➡ )
API
Gateway
Service A
Service B
Service C
Financial
Institution A
Financial
Institution B
Financial
Institution C
Merchant X
Merchant Y
Merchant Z
API
Gateway
Service A
Service B
Service C
Financial
Institution A
Financial
Institution B
Financial
Institution C
( ➡ )
Merchant X
Merchant Y
Merchant Z
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
The systems of merchants system and financial
institutions are out of our control
( ➡ )
Hystrix
API
Gateway
Service A
Service B
Service C
Merchant A
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Introduced Hystrix Circuit Breaker
for inter-system communications
Hystrix
Hystrix
Hystrix
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Without Circuit Breaker,
If a system outage happens in
financial institution A …
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Slow Response, Timeout
( ➡ )
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
The failure is propagated to
Service A, blocking processes
and causing possible thread
exhaustion
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Failure propagated to API
Gateway causing blocked
processes, thread depletion
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
( ➡ )
Failure propagated to API
Gateway causing blocked
processes, thread depletion
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
B and C are affected by the failure
of financial institution A.
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
( ➡ )
With Circuit Breaker
If a system outage happens in
financial institution A …
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Circuit Breaker prevents the failure
propagation.
No worry about the effect to other financial
institutions.
( ➡ )
API
Gateway
Service A
Service B
Service C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Circuit Breaker adds fault tolerance
and resiliency to the app
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
( ➡ )
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
Introduced RabbitMQ + Spring Cloud
Stream for async processing
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
When a failure happens in the
merchant system
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Hystrix
The message will be diverted to a “Dead
Letter Queue” and requeued later
( ➡ )
Notification
Gateway
Receiver A
Receiver B
Receiver C
Merchant X
Merchant Y
Merchant Z
Financial
Institution A
Financial
Institution B
Financial
Institution C
Hystrix
Hystrix
Hystrix
Even if an outage happens in the
merchant, the Circuit Breaker will
prevent the failure propagation.
Hystrix
⤴
⤴
➢
➢
➢
➢
https://concourse-ci.org/
Concourse
https://concourse-ci.org/
Concourse
Staging
Develop
Production
Push to a branch triggers the pipeline
Staging
Develop
Production
Unit test for each Java version
to detect issues on new versions earlier
Staging
Develop
Production
Staging
Develop
Production
Staging
Develop
Production
Develop Cycle by CI
Staging
Develop
Production
Staging
Develop
Production
Merging to master branch triggers
deploy to Nexus repository
Staging
Develop
Production
Production
One-click Deploy to production
from Nexus Repository using nexus concourse resource
API
Gateway
Service A
Service B
Service C
Financial
Institution B
Mock
Financial
Institution B
Mock
Financial
Institution B
Mock
●
●
Problem
HTTP transmission processing is low throughput
Unexpected short of Circuit Breaker
Report html
cf push
Performance testing should be
repeated over and over during development
to ensure continuous improvement.
➢
○
○
○
※Metrics, tracing, and logging 
https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
➢
○
○
○
・
・
・
・
 
Preset Dashboard
Preset Alerts
rabbitmq
⇒
{
"targets":[
"10.0.1.1",
"10.0.2.1",
"10.0.3.1",
"10.0.1.2",
"10.0.2.2",
],
"labels":{
"__meta_bosh_deployment":"rabbitmq",
"__meta_bosh_job_process_name":"rabbitmq-server"
}
}
Targets are added
automatically
Org A
⇒
Promregator
SpaceA
CF Cloud
Controller
Devs don’t care
Prometheus
https://github.com/promregator/promregator
Considering migration
to Metrics Registrar
Micrometer
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
management:
endpoints:
web:
exposure:
include: "*"
base-path: /actuator
Also shows past changes
Visualize if each deployment is healthy
at this moment
Visualize if each VM is healthy
at this moment
Warning
Ops
Warning
Ops
・ ・
Dev
We can always check all metrics in
Grafana that we have ever collected
from logs
・CPU
・JVM Memory(per area)
・Thread
・GC(frequency、time)
・Classloader
Dev
Can always check metrics in Grafana
we have ever collected from logs
・CPU
・JVM Memory(per area)
・Thread
・GC(frequency、time)
・Classloader
Action is triggered by alerting
Ops
Dev
No outsourcing to
external monitoring center
org_name: OrgA
severity: fatal
org_name: OrgA
severity: /.*/
severity: fatal
severity: /.*/
Set route/receiver
using org_name,
severity as keys
Twilio call for emergency
(24 hour support)
Link to the Grafana dashboard
Detect RabbitMQ Dead Letter QueueCall
・
・ ・ ・
・
・
・
・
・
Detect the decrease of
the service level
before user’s report
➢
○
○
○
 ・
 ・
Ops
Dev
Biz
ElastAlert
Praeco
Firehose
to syslog
Firehose-to
-syslog
Firehose-to
-syslog
Firehose-to
-syslog
Loggregator
Agent
Doppler
STD
OUT
STD
OUT
Considering migration
to Syslog Drain
---
releases:
- name: syslog
version: "11.4.0"
url: "https://bosh.io/xxx?v=11.4.0"
sha1: "xxx"
addons:
- name: syslog
exclude:
jobs:
- name: syslog_forwarder
release: syslog
jobs:
- name: syslog_forwarder
release: syslog
properties:
syslog:
address: logstash.xxx.jp
port: 5514
transport: tcp
tls_enabled: true
permitted_peer: "*.xxx.jp"
ca_cert: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Ops
Dev
Biz
Biz
Dev
System Error
In a merchant
High latency
in a financial
institution
Ops
Ops
Dev
cf_org_name: OrgA
log_level: ERROR
cf_org_name: OrgA
log_level: WARN
@message: xxx
@message: xxx
Set notification
destination using
cf_org_name,
log_level as keys
Twilio call for emergency
(24 hour support)
ElastAlert
➢
○
○
○
Service A
Merchant X
Financial
Institution A
API
Gateway
Receiver A
Notification
Gateway
Visualize
You can see a bottleneck at a glance across
multiple services.
Zipkin, Spring Cloud Sleuth
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring:
zipkin:
base-url: https://my-zipkin.example.com
service.name: my-application
sender.type: web
Ops
Dev
Biz
Share Elasticsearch with LoggingConfigure
instrumentations
# of transactions
Duration (Avg) Duratin (Percentile)
On-premise
Existing app
Existing
system team
Apps on PCF Dev
Something
happens in the
existing app?
Let me check
➢
➢
Case1: Effect on Business members
Specialist of credit card system (NOT developer)
Biz
# of transactions
Duration (Avg) Duratin (Percentile)
Case1: Effect on Business members
Specialist of credit card system (NOT developer)
Something wrong...
It should be shorter...
Biz
Specialist of Credit Card System (Not developer)
Jump to Zipkin
Case1: Effect on Business members
This process affects?
Biz
Dev
Case1: Effect on Business members
Biz member can detect the problem.
I’ll check now.
This transaction seems
to be something wrong.Biz
Case2: Detect of abnormal trend
Case2: Detect of abnormal trend
With long time period,
delayed on specific time slot.
22:00 22:00 22:00
No problem
Case2: Detect of abnormal trend
No transaction finished.
Transaction might be locked.
On-premise
Existing app
Apps on PCF
Case2: Detect of abnormal trend
Delays on a specific time slot
Re-considered the number of
parallels and timeout.
Case2: Detect of abnormal trend
Our system was improved
by detecting slight abnormality
Improves apps’ operation efficiency
dramatically
●
●
●
●
Before After
Release
Improvement
Release Work Manual work One click
Release Quality Human error occurs No mistakes
Release Time 45 min 5 min
Use of
Cloud
Scaleout operation Manual work One click
Container
Orchestration
- Leave it to the
platform
Auto-restart Self-made tools Leave it to the
platform
●
●
●
A platform cannot be built by only relying on
outsourced vendors.
It’s possible to build and operate a platform by
taking ownership in-house.
A powerful platform allows a small engineering
team to focus on application development.
SpringOne Platform 2019

SpringOne Platform 2019