-
Notifications
You must be signed in to change notification settings - Fork 0
/
radar.json
100 lines (100 loc) · 4.31 KB
/
radar.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
[
{
"name": "Python Scripting",
"ring": "trial",
"quadrant": "tools",
"isNew": "FALSE",
"description": "Better suited to building CLI tools with less overhead than TypeScript, but cross platform and readable, unlike bash. It's main drawback is it cannot leverage our existing TypeScript codebase."
},
{
"name": "Make",
"ring": "assess",
"quadrant": "tools",
"isNew": "FALSE",
"description": "Works ok for the terraform orchestration layer but there are probably better alternatives for most other use cases. Make, whilst technically cross platform, encourages platform specific scripts and it can be hard to follow logic flows of non trivial cases, so something like Python may be a better choice."
},
{
"name": "TypeScript Scripting",
"ring": "trial",
"quadrant": "tools",
"isNew": "FALSE",
"description": "We have a lot of existing TypeScript scripts, and it remains a good choice where we want to leverage existing code or libraries. However, it is heavier to run & deploy than Python, so less suited to other use cases."
},
{
"name": "Bash Scripting",
"ring": "hold",
"quadrant": "tools",
"isNew": "FALSE",
"description": "We have preferable alternatives to bash scripts for almost all use cases, so adding new new bash scripts should be done with caution."
},
{
"name": "Result Types",
"ring": "trial",
"quadrant": "techniques",
"isNew": "FALSE",
"description": "A more TS friendly alternative to throwing exceptions. Applicable across the TS stack, with the possible exception of React components."
},
{
"name": "Event Driven Architecture",
"ring": "adopt",
"quadrant": "techniques",
"isNew": "FALSE",
"description": "Most of our back end jobs are event driven, and we should continue to use this pattern for new services."
},
{
"name": "Polling Architecture",
"ring": "hold",
"quadrant": "techniques",
"isNew": "FALSE",
"description": "A small part of our architecture still relies on polling, but we migrate away from this in due course and all new systems should be event driven where possible."
},
{
"name": "React Component Redux State from Hooks",
"ring": "adopt",
"quadrant": "techniques",
"isNew": "FALSE",
"description": "We should aggressively migrate away from legacy mapping functions to hooks for redux interaction in components."
},
{
"name": "React Component Redux State from Mapping Functions",
"ring": "hold",
"quadrant": "techniques",
"isNew": "FALSE",
"description": "Whilst there might be specific cases where the performance benefits of mapping functions are required, in general we should be using hooks to interact with redux state in components and actively migrating away from mapping functions in existing components."
},
{
"name": "Twilio Serverless Functions",
"ring": "hold",
"quadrant": "platforms",
"isNew": "FALSE",
"description": "Twilio's serverless functions have a poor dev experience compared to better supported alternatives like AWS Lambda, and offer no significant benefits except integrated auth."
},
{
"name": "AWS Lambda (node runtime)",
"ring": "hold",
"quadrant": "platforms",
"isNew": "FALSE",
"description": "All new AWS Lambdas should be implemented with containers. They offer a better deployment experience and are more flexible than the node runtime."
},
{
"name": "AWS Lambda (containers)",
"ring": "adopt",
"quadrant": "platforms",
"isNew": "FALSE",
"description": "AWS Lambda functions implemented with containers should be the default choice for implementing serverless functions over those implemented with node modules or Twiiio serverless functions."
},
{
"name": "ElasticSearch",
"ring": "adopt",
"quadrant": "platforms",
"isNew": "FALSE",
"description": "New search capabilities should be implemented with ElasticSearch rather than complex custom SQL."
},
{
"name": "Express",
"ring": "assess",
"quadrant": "languages & frameworks",
"isNew": "FALSE",
"description": "Using Express suits the needs of our ECS container based services, but may not be the best choice for serverless functions. If we reimplement our current HRM services as serverless functions, we should consider using a different framework."
}
]