Vous êtes sur la page 1sur 23

Golang

Production Ready
Currently : GOPAY - Backend Developer

Community : @apangeran

@a_pangeran

https://cybercoding.wordpress.com

andi.pangeran@go-pay.co.id

Andi Pangeran
engineering

2008 2010 2012 2016 2017

my first language is delphi Already know low-level hello world to domain Interested in the rapid October 2017
at that time. Active in many system programming. problem. Working-on kind development of technology
programming / hacking Releasing apps from of ERP application that are in the startup world. Moving
forum as observer. hacking tools to simple used in several harbor in from comfort zone to small
vmware like apps. With indonesia. My domain startup Jtravel and end up
jasakom community, build speciality is accounting, in jurnal.id
antivirus like PCMAV. taxation, inventory
writing wordpress blog. management (Finance)..
i do 1.3 GO-JEK
8 million kms
nine

w
argest food delivery
company in Asia

30,000 TONS

2 million
GO-JEK payments (GO-PAY)
Gopay - Liquidity

stan marsh new withdrawal flow

part of liquidity team to give maximum convenience withdrawal


Stan Marsh

stanmarsh withdrawal just support one bank channel and manual flow

need manual intervention when transfer to bank fail for unknown reason
such a timeout, etc

at that time is very hard to manage stan-marsh, related to logs, data in


database, etc.

https://blog.gojekengineering.com/thank-you-stan-marsh-29db553544bf
New Withdrawal Flow
1# fun fact
golang
the twelve factors

I. Codebase VII. Port binding


One codebase tracked in revision control, many deploys Export services via port binding

II. Dependencies VIII. Concurrency


Explicitly declare and isolate dependencies Scale out via the process model

III. Config IX. Disposability


Store config in the environment Maximize robustness with fast startup and graceful shutdown

IV. Backing services X. Dev/prod parity


Treat backing services as attached resources Keep development, staging, and production as similar as possible

V. Build, release, run XI. Logs


Strictly separate build and run stages Treat logs as event streams

XII. Admin processes


Run admin/management tasks as one-off processes
2# fun fact
GO-JEK Framework
3# fun fact
Pair Programming
4# fun fact
trunk
5# fun fact
know the rules

Answer checklist, it's just like 15 minutes exam :D

Submit ticket, file a deployment and send to tech lead, wait for approval

Deploy, publish notification in email & slack, click pipeline button

RCA on failure, submit failure root cause, update checklist, all team member should review
Checklist Template
OVERVIEW
[explain overall impact and feature overview, bug details]

Stories/Bug Reports
Committers
List all committers, Project Lead

SERVICES IMPACTED
List all services which have been impacted and why? What kind of test has been performed for each one of the them?

Service Details

● Please provide javadoc/rubydoc/godoc api documentation for your service client or service uri.
● Please provide URL for your wiki page for this specific change.
● Please provide datadog dashboard URL for your service
● Please provide newrelic dashboard URL for your service

Service Rollback

● What’s your rollback strategy?


● Do you switch rollback with feature flag or does it require complete deployment again?

Service Component — Database

● List down all the database changes, if you added any columns, removed any columns, added or removed any tables.
● What kind of indexes do you have?
● If you added new column does it require index? If yes, why? If no, why not?
● Do you make changes to records? Do you do frequent deletes or updates?

Service Component — Security

Are you making changes to the public API? If changes are directly impacting the public API end point, then please get approval from the Security Team and a sign off
Please also include security ticket link over here.

Service Component — Monitoring

● List all the services you own and list down each server monitoring parameters
● Alerts for service uptime
● Alerts for service performance degradation
● Alerts for service machine disk/cpu/memory — what’s the threshold and how pager duty is triggered
● Please include today’s screenshots for each of them. We need to make sure that you have proper monitoring in place.

https://blog.gojekengineering.com/limiting-software-infant-mortality-rate-decoding-gojek-deployment-checklist-1c6cc3e28df
RCA template
Overview:
[explain issues here]

What Happened:
1.51pm - xx
2.06pm - xx
2.10pm - xx

Resolution:
-

Root Causes:
-
Impact:
-

What went well?

What Didn't Go So Well?


-

Action Items
-
Reference
https://blog.gojekengineering.com/thank-you-stan-marsh-29db553544bf

https://blog.gojekengineering.com/limiting-software-infant-mortality-rate-decoding-gojek-deployment-checklist-1c6cc3e28df

https://trunkbaseddevelopment.com/

https://12factor.net/

http://blog.gojekengineering.com/
THANK YOU!

Vous aimerez peut-être aussi