TO be continue
Indicators
Tech indicators
Security
Stability
Availability
- MTBF (Mean Time Between Failure)
- MTTR (mean time to restoration)
- Availability = (MTBF/(MTBF+MTTR))*100%
Performance
Operation indicators
Trading volume
CVR (Click Value Rate)
User account
PV/UV
Bounce Rate
Development Cycle
Requirements
BackLog
User Story
UISpec
Design
Design drawing
html & CSS
Develop
develop Environment:
- github Boxen for ios
- vagrantup
Version Manage Tools: git
Package Manager:
OS level
- BSD/Macos: homebrew(made of ruby& git)
- Linux
- from source: configure/make/make install
- using rpm/dpkg(hard mode): ==> centos/debian(ubuntu)
- using yum/apt(easy mode): ==> centos/debian(ubuntu)
Language level
- .net: nuget
- java: maven
- sacla: sbt
- ruby: gem
- jsp: npm
- swift: spm
- python:
- easy install (setuptools), can’t support uninstall
- pip (good)
- go: get
Branchs Manage: master develop
Develop Process: Scrum
Engineering: CI (Continuous interaction) / CD(Continuous delivery) / platformization / Framization
Timer: 2 weeks
FrontEnd
BackEnd focus
High Scalability: timeout
Performance: cache/parallelization
Stress Testing tool:
- TSung: TCPCopy
- A/B test
debug
- keep context: no reboot, gcore/jmap/tcpdump
- restore context: tcpcopy,touchstone
- snap analysis: gdb、Xmap、mat、jstack
- call analysis: btrace、Xtrace
- composed ansysis: perf、Xstat、Xtop、sysdig
Security
Integration
tools
- jenkins
- Travis CI based on GitHub
process
one project, one build for small business
- Project Architecture diagram
- develop process diagram
- Quality Assurance
hand-testmulti-projects, one build for mid business
Module num > 20
develop num > 100 - Project Architecture diagram
- develop process diagram:
commit role: from dev to bundle
commit way: from committing code to repositories - Quality Assurance
make code review platform
make bundle platform
make buider platform
make test platform
make insepection platform
make gray release processmulti-projects, multi-build, pluginization for large business
every Module is individual on the develp,code review,integration,test - Project Architecture diagram
- develop process diagram:
bundle dev phase
integration phase
release phase - Quality Assurance: CI,CD
e.g
- web develop process (from zhihu)
- Erect task on phabricator
- commit diff and relating to task
- unit test
- code reviewer
- merge code
- online test
- close task
- android
- Genymotion (android emulator)
- mobile quality assurance (from meituan)
Static resource optimization
Static code review
- regulation: google’s C++ coding style guide for all dev languages
- phabricator from facebook (good)
- gerrit
Develop output check
Build tools
- buildout for python
- gradle for android build
- maven
Version and config file
deploy tools
- fabric
- made of python
- <10 servers
- servers status are same
- chef/puppet
- made of ruby
- slow
- salt/ansible (good)
- Docker (best,final)
route: BGP((Border Gateway Protocol), one IP, support accessing from Various Operators
CDN:
VPS(Virtual Privates Srever)
- ailiyun
- qingcloud
- digitial ocean
- linode
- aws
Releases for various platform
Operation
improve abailability
- Avoid single point of failure:network/Device/code problem
- Narrow time of failure (imporant)
- automate
- one click
- Cure:
- for stateless instance
- for state instance
HA:master-salve
Paxos/raft - for cluster
downgrade
limit crowding
automatic scaling
fast fallback - for data center: multi-IDC
- for local city
- for domestic city
- for global
- for stateless instance
Monitor and Warning
- zabbix+graphite(zhihu)
- xiaomi open-falcon
- supervisor
Log from frontend to backend
exception log
performance log
Visit log
Influence log
trace log
e.g
Profiling everything
for backend
- gperftools
- perf
- gprof
1
2
3gcc -pg a.c -o a
./a
gprof ./a
for frontend