SlideShare a Scribd company logo
Evolving
ALLSTOCKER
Masashi Umezawa & Kazunori Ueda
ESUG 2019
Agile increments with Pharo Smalltalk
What is ALLSTOCKER?
● Online platform for trading used construction equipment
and machinery
○ Marketplace
○ Real-time Bid Auction
● Over 4000 worldwide buyers
● Over 400 machines/month listed on the site
● Most systems are built with Pharo Smalltalk
Our Development Process - KANBAN
Backlog Analysis Development Test Deploy
○ Swarm to make the flow smoother!
→→→ →
2015/02- In the Beginning
● First prototype was made in two weeks
○ Only 4 prerequisites (Seaside, Glorp, Nagare, AWS SDK for Smalltalk)
○ User/Machine registration, photo uploader, watchlist
● After 90 releases
○ 34 prerequisites
○ 1100+ classes
Our policy - Smalltalk as a Hub
● We take polyglot microservices approach
○ Programming languages
■ Smalltalk, JavaScript, Ruby, Lua, Groovy, Erlang, Python
○ Databases
■ PostgreSQL, Redis, Neo4j, Tarantool, MongoDB
○ External APIs
■ Elasticsearch, SendGrid, Mixpanel, Fluentd
● Smalltalk is a great hub for leveraging these elements
Marketplace Search
Increments
Why Search is Important?
● In our site, Search event ratio is
43+ percent
● Buyers first search, then view,
and buy
Search! View
2015/7 - Full-Text Search
● Basic full-text search
● Elasticsearch-smalltalk for multilingual full-text search
○ Different analyzers for each language
○ Search results are boosted according to the user’s
primary language
Elasticsearch-Smalltalk
prepareSearch
esSearch := ESSearch new index: self index.
esSearch minScore: self minScore.
^esSearch
search
es := self prepareSearch.
es query: self buildQuery.
^ es searchFrom: self offset size: self limit
buildNameMatchQuery: words fieldName: fieldName ngramBoost:
boostValue
| phraseQuery matchQuery prefixQuery |
phraseQuery := ESMatchQuery new
matchPhrase;
field: fieldName;
query: words;
yourself.
prefixQuery := ESPrefixQuery new
field: fieldName;
query: words;
yourself.
matchQuery := ESMatchQuery new
field: fieldName, '__ngram';
query: words;
boost: boostValue;
yourself.
^ ESBoolQuery new
should: {phraseQuery. prefixQuery. matchQuery};
minimum_should_match: 1;
yourself.
● Building
● Searching
Boosted!
2016/2 - Advanced Search
● Let’s support advanced search!
○ Many aggregation options
■ by category, maker, model number
● Elasticsearch was not enough to do complex aggregations
● Joining tables with Glorp was hard to maintain
● We adopted Graph database - Neo4j
Graph Model (1)
● Nodes and Relationships
○ (Machine)-[BELONGS_TO_CATEGORY]->(Category)
○ (Machine)-[IS_OF_MODEL]->(Model)
○ (Maker)-[MADE_MODEL]->(Model)
○ (Model)-[HAS_SPEC]->(Spec)
○ (Spec)-[BELONGS_TO_SPEC_CATEGORY]->(SpecCategory)
Neo4reSt
● Neo4j database client and Object wrappers
○ Introducing Neo4reSt
db := N4GraphDb new.
node1 := db createNode: {#name-> 'ume'}.
node2 := db createNode: {#name-> 'Smalltalk'}.
relation1 := node1 relateTo: node2 type: #uses properties: {#years->18}.
db initialNode relateTo: node1 type: #people
Graph Model (2)
● We can freely get
nodes/ relationships
using Cypher query
language
2017/2 Revamping Advanced Search
● Need to generate complex queries dynamically according to
various search options (spec filters)
● Hard-coded cypher queries were unmaintainable.
● SCypher was developed
○ “Manipulating Neo4j from Pharo Smalltalk” (Sample code project)
SCypher
user := 'user' asCypherObject.
friend := 'friend' asCypherObject.
friends := 'friends' asCypherObject.
query := CyQuery statements: {
CyMatch of: (CyRelationship start: user end: friend type: 'FRIEND').
CyWhere of: (CyExpression eq: (user prop: 'name') with: 'name'
asCypherParameter).
CyWith of: (user, ((CyFuncInvocation count: friend) as: friends)).
CyWhere of: (CyExpression gt: friends with: 10).
(CyReturn of: user) limit: 10.
}.
query cypherString. 'MATCH (user)-[:FRIEND]-(friend)
WHERE (user.name = $name)
WITH user, count(friend) AS friends
WHERE (friends > 10)
RETURN user LIMIT 10 '
● Generated query can be executed by
N4RestClient>>queryByCypher: queryString params: dictionary
Auction Increments
2016/7-9- Beginning Realtime Auction System
● Need a highly reactive real-time bidding auction system
○ Vue.js (presentation)
○ Pharo (business logic)
○ Erlang (bidding core)
● Web API + Ajax + WebSocket
Original Auction System Network Architecture
● Bid requests
○ HTTP
● Notifications
○ WebSocket
2018/3
Auction System Crisis
● Slow updates
● Too many connections
● Heavy load
● Difficult to log-in...
2018/4-8 Scaling-out Auction System
1. On-demand notifications
2. Reducing the number of connections
3. Multiple Pharo images
● Our strategies:
On-demand Notifications
● Originally each client gets periodic updates on all items
○ Via Zinc-WebSocket
● Each client has observing item list
○ Client gets updates only when the item values are changed
○ Via Zinc-Server-Sent-Events
Reducing the Number of Connections
● SSE + HTTP/2
○ Enables single TCP connection for many requests
● SSE is unidirectional and lightweight
server {
listen 443 ssl http2;
...
}
Multiple Pharo images
● Let’s utilize multicore CPU!
● We divided one pharo image into three
○ auction-1, auction-2 (app server)
○ webhook (interact with Erlang bid server)
● Web API + Redis pubsub for mutual communication
○ RediStick pubsub mode
RediStick
● A redis client supporting auto-reconnect
○ Reliable pubsub by pinging to itself
stick := RsRediStick targetUrl: 'sync://localhost'.
stick connect.
stick beSticky. "Auto reconnect when server is not accessible"
stick onError: [ :e | e pass ].
stick endpoint subscribe: #('ping') callback: [:msg | msg inspect].
"From another stick"
pubStick endpoint publish: 'ping' message: 'OK?'
Load-balancing via nginx
● Load-balancing by cookie-based sticky session
upstream auction_upstream {
hash $cookie_stocker consistent;
server unix:/var/run/ auction_1.sock;
server unix:/var/run/ auction_2.sock;
}
server {
listen unix:/var/run/ auction_1.sock;
location / {
proxy_pass http:// as-auction-1.default.svc.cluster.local: 9000;
}
}
server { … }
Revised Auction Architecture
●3 pharo
images
●PUBSUB &
SSE for async
notifications
$ kubectl top pods
NAME CPU(cores) MEMORY(bytes)
as-auction-1-dpl-dc699554b-c5jh4 115m 261Mi
as-auction-2-dpl-5d8bbd7b5c-qwlbp 111m 236Mi
as-auction-webhook-dpl-66f47557b-jn2dc 48m 194Mi
as-marketplace-dpl-7d898866d4-w72cc 119m 736Mi
DONE!!
Questions?
● Visit allstocker.com
● Please stay tuned for more updates!

More Related Content

PDF
TiDB Introduction - San Francisco MySQL Meetup
PDF
Introducing TiDB @ SF DevOps Meetup
PDF
CON6423: Scalable JavaScript applications with Project Nashorn
PPTX
MariaDB Encryption using AWS Key Management Service
PDF
TiDB + Mobike by Kevin Xu (@kevinsxu)
PDF
ActiveSupport::Notifications inside out
PDF
"Smooth Operator" [Bay Area NewSQL meetup]
PDF
Introducing TiDB Operator [Cologne, Germany]
TiDB Introduction - San Francisco MySQL Meetup
Introducing TiDB @ SF DevOps Meetup
CON6423: Scalable JavaScript applications with Project Nashorn
MariaDB Encryption using AWS Key Management Service
TiDB + Mobike by Kevin Xu (@kevinsxu)
ActiveSupport::Notifications inside out
"Smooth Operator" [Bay Area NewSQL meetup]
Introducing TiDB Operator [Cologne, Germany]

What's hot (20)

PDF
Initial presentation of openstack (for montreal user group)
PDF
Hadoop @ eBuddy
PDF
re:Invent 2018 recap
ODP
Oslo Vancouver Onboarding
PDF
Elasticsearch as a time series database
PDF
OSDC 2015: Dr. Udo Seidel | Developing Applications for the New Cloud Operati...
PDF
Ceph Day Santa Clara Welcome
PDF
Introducing MagnetoDB, a key-value storage sevice for OpenStack
PDF
TiDB for Big Data
PDF
Dynomite - PerconaLive 2017
PDF
TiDB as an HTAP Database
PDF
A Brief Introduction of TiDB (Percona Live)
PDF
Trondheim Eclipe Day 2015 and 2016
PDF
Rust in TiKV
PDF
OpenNebulaConf2017EU: Growing into the Petabytes for Fun and Profit by Michal...
PDF
Analytic Insights in Retail Using Apache Spark with Hari Shreedharan
PDF
Cloud storage: the right way OSS EU 2018
PDF
Infrastructure as Code with Terraform: Koombea TechTalks
PDF
OpenNebulaConf2017EU: Welcome Talk State and Future of OpenNebula by Ignacio ...
PDF
Atmosphere 2018: Wojciech Krysmann- INFRA AS CODE - TERRAFORM DEEP DIVE AND B...
Initial presentation of openstack (for montreal user group)
Hadoop @ eBuddy
re:Invent 2018 recap
Oslo Vancouver Onboarding
Elasticsearch as a time series database
OSDC 2015: Dr. Udo Seidel | Developing Applications for the New Cloud Operati...
Ceph Day Santa Clara Welcome
Introducing MagnetoDB, a key-value storage sevice for OpenStack
TiDB for Big Data
Dynomite - PerconaLive 2017
TiDB as an HTAP Database
A Brief Introduction of TiDB (Percona Live)
Trondheim Eclipe Day 2015 and 2016
Rust in TiKV
OpenNebulaConf2017EU: Growing into the Petabytes for Fun and Profit by Michal...
Analytic Insights in Retail Using Apache Spark with Hari Shreedharan
Cloud storage: the right way OSS EU 2018
Infrastructure as Code with Terraform: Koombea TechTalks
OpenNebulaConf2017EU: Welcome Talk State and Future of OpenNebula by Ignacio ...
Atmosphere 2018: Wojciech Krysmann- INFRA AS CODE - TERRAFORM DEEP DIVE AND B...
Ad

Similar to Evolving ALLSTOCKER: Agile increments with Pharo Smalltalk (20)

PPTX
Revealing ALLSTOCKER
PDF
Slaying Monoliths with Node and Docker
PPTX
Inside Wordnik's Architecture
PDF
Designing your API Server for mobile apps
PDF
EAI design patterns/best practices
PDF
Microservices and the Art of Taming the Dependency Hell Monster
KEY
Polyglot parallelism
PDF
node.js, javascript and the future
PPTX
Effective Microservices In a Data-centric World
PDF
apidays LIVE Paris 2021 - Edge Side APIs by Kevin Dunglas, Les Tilleuls
PPTX
Scaling with swagger
PDF
Crossing the Production Barrier: Development at Scale
PDF
Olist Architecture v2.0
PDF
Кирилл Латыш "ERP on Websockets"
PDF
Edge Side APIs: Fast and Reliable Hypermedia APIs
PDF
Cloud computing-1224001671523233-9
PDF
Distributed Systems in Data Engineering
PDF
REST full API Design
PDF
Microservices architecture: practical aspects
PDF
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Revealing ALLSTOCKER
Slaying Monoliths with Node and Docker
Inside Wordnik's Architecture
Designing your API Server for mobile apps
EAI design patterns/best practices
Microservices and the Art of Taming the Dependency Hell Monster
Polyglot parallelism
node.js, javascript and the future
Effective Microservices In a Data-centric World
apidays LIVE Paris 2021 - Edge Side APIs by Kevin Dunglas, Les Tilleuls
Scaling with swagger
Crossing the Production Barrier: Development at Scale
Olist Architecture v2.0
Кирилл Латыш "ERP on Websockets"
Edge Side APIs: Fast and Reliable Hypermedia APIs
Cloud computing-1224001671523233-9
Distributed Systems in Data Engineering
REST full API Design
Microservices architecture: practical aspects
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Ad

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)

Recently uploaded (20)

PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
medical staffing services at VALiNTRY
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
AI in Product Development-omnex systems
PDF
Digital Strategies for Manufacturing Companies
PDF
top salesforce developer skills in 2025.pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Introduction to Artificial Intelligence
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Transform Your Business with a Software ERP System
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Design an Analysis of Algorithms I-SECS-1021-03
How Creative Agencies Leverage Project Management Software.pdf
medical staffing services at VALiNTRY
Internet Downloader Manager (IDM) Crack 6.42 Build 41
VVF-Customer-Presentation2025-Ver1.9.pptx
AI in Product Development-omnex systems
Digital Strategies for Manufacturing Companies
top salesforce developer skills in 2025.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Wondershare Filmora 15 Crack With Activation Key [2025
Introduction to Artificial Intelligence
Reimagine Home Health with the Power of Agentic AI​
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
2025 Textile ERP Trends: SAP, Odoo & Oracle
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Operating system designcfffgfgggggggvggggggggg
Transform Your Business with a Software ERP System

Evolving ALLSTOCKER: Agile increments with Pharo Smalltalk

  • 1. Evolving ALLSTOCKER Masashi Umezawa & Kazunori Ueda ESUG 2019 Agile increments with Pharo Smalltalk
  • 2. What is ALLSTOCKER? ● Online platform for trading used construction equipment and machinery ○ Marketplace ○ Real-time Bid Auction ● Over 4000 worldwide buyers ● Over 400 machines/month listed on the site ● Most systems are built with Pharo Smalltalk
  • 3. Our Development Process - KANBAN Backlog Analysis Development Test Deploy ○ Swarm to make the flow smoother! →→→ →
  • 4. 2015/02- In the Beginning ● First prototype was made in two weeks ○ Only 4 prerequisites (Seaside, Glorp, Nagare, AWS SDK for Smalltalk) ○ User/Machine registration, photo uploader, watchlist ● After 90 releases ○ 34 prerequisites ○ 1100+ classes
  • 5. Our policy - Smalltalk as a Hub ● We take polyglot microservices approach ○ Programming languages ■ Smalltalk, JavaScript, Ruby, Lua, Groovy, Erlang, Python ○ Databases ■ PostgreSQL, Redis, Neo4j, Tarantool, MongoDB ○ External APIs ■ Elasticsearch, SendGrid, Mixpanel, Fluentd ● Smalltalk is a great hub for leveraging these elements
  • 7. Why Search is Important? ● In our site, Search event ratio is 43+ percent ● Buyers first search, then view, and buy Search! View
  • 8. 2015/7 - Full-Text Search ● Basic full-text search ● Elasticsearch-smalltalk for multilingual full-text search ○ Different analyzers for each language ○ Search results are boosted according to the user’s primary language
  • 9. Elasticsearch-Smalltalk prepareSearch esSearch := ESSearch new index: self index. esSearch minScore: self minScore. ^esSearch search es := self prepareSearch. es query: self buildQuery. ^ es searchFrom: self offset size: self limit buildNameMatchQuery: words fieldName: fieldName ngramBoost: boostValue | phraseQuery matchQuery prefixQuery | phraseQuery := ESMatchQuery new matchPhrase; field: fieldName; query: words; yourself. prefixQuery := ESPrefixQuery new field: fieldName; query: words; yourself. matchQuery := ESMatchQuery new field: fieldName, '__ngram'; query: words; boost: boostValue; yourself. ^ ESBoolQuery new should: {phraseQuery. prefixQuery. matchQuery}; minimum_should_match: 1; yourself. ● Building ● Searching Boosted!
  • 10. 2016/2 - Advanced Search ● Let’s support advanced search! ○ Many aggregation options ■ by category, maker, model number ● Elasticsearch was not enough to do complex aggregations ● Joining tables with Glorp was hard to maintain ● We adopted Graph database - Neo4j
  • 11. Graph Model (1) ● Nodes and Relationships ○ (Machine)-[BELONGS_TO_CATEGORY]->(Category) ○ (Machine)-[IS_OF_MODEL]->(Model) ○ (Maker)-[MADE_MODEL]->(Model) ○ (Model)-[HAS_SPEC]->(Spec) ○ (Spec)-[BELONGS_TO_SPEC_CATEGORY]->(SpecCategory)
  • 12. Neo4reSt ● Neo4j database client and Object wrappers ○ Introducing Neo4reSt db := N4GraphDb new. node1 := db createNode: {#name-> 'ume'}. node2 := db createNode: {#name-> 'Smalltalk'}. relation1 := node1 relateTo: node2 type: #uses properties: {#years->18}. db initialNode relateTo: node1 type: #people
  • 13. Graph Model (2) ● We can freely get nodes/ relationships using Cypher query language
  • 14. 2017/2 Revamping Advanced Search ● Need to generate complex queries dynamically according to various search options (spec filters) ● Hard-coded cypher queries were unmaintainable. ● SCypher was developed ○ “Manipulating Neo4j from Pharo Smalltalk” (Sample code project)
  • 15. SCypher user := 'user' asCypherObject. friend := 'friend' asCypherObject. friends := 'friends' asCypherObject. query := CyQuery statements: { CyMatch of: (CyRelationship start: user end: friend type: 'FRIEND'). CyWhere of: (CyExpression eq: (user prop: 'name') with: 'name' asCypherParameter). CyWith of: (user, ((CyFuncInvocation count: friend) as: friends)). CyWhere of: (CyExpression gt: friends with: 10). (CyReturn of: user) limit: 10. }. query cypherString. 'MATCH (user)-[:FRIEND]-(friend) WHERE (user.name = $name) WITH user, count(friend) AS friends WHERE (friends > 10) RETURN user LIMIT 10 ' ● Generated query can be executed by N4RestClient>>queryByCypher: queryString params: dictionary
  • 17. 2016/7-9- Beginning Realtime Auction System ● Need a highly reactive real-time bidding auction system ○ Vue.js (presentation) ○ Pharo (business logic) ○ Erlang (bidding core) ● Web API + Ajax + WebSocket
  • 18. Original Auction System Network Architecture ● Bid requests ○ HTTP ● Notifications ○ WebSocket
  • 19. 2018/3 Auction System Crisis ● Slow updates ● Too many connections ● Heavy load ● Difficult to log-in...
  • 20. 2018/4-8 Scaling-out Auction System 1. On-demand notifications 2. Reducing the number of connections 3. Multiple Pharo images ● Our strategies:
  • 21. On-demand Notifications ● Originally each client gets periodic updates on all items ○ Via Zinc-WebSocket ● Each client has observing item list ○ Client gets updates only when the item values are changed ○ Via Zinc-Server-Sent-Events
  • 22. Reducing the Number of Connections ● SSE + HTTP/2 ○ Enables single TCP connection for many requests ● SSE is unidirectional and lightweight server { listen 443 ssl http2; ... }
  • 23. Multiple Pharo images ● Let’s utilize multicore CPU! ● We divided one pharo image into three ○ auction-1, auction-2 (app server) ○ webhook (interact with Erlang bid server) ● Web API + Redis pubsub for mutual communication ○ RediStick pubsub mode
  • 24. RediStick ● A redis client supporting auto-reconnect ○ Reliable pubsub by pinging to itself stick := RsRediStick targetUrl: 'sync://localhost'. stick connect. stick beSticky. "Auto reconnect when server is not accessible" stick onError: [ :e | e pass ]. stick endpoint subscribe: #('ping') callback: [:msg | msg inspect]. "From another stick" pubStick endpoint publish: 'ping' message: 'OK?'
  • 25. Load-balancing via nginx ● Load-balancing by cookie-based sticky session upstream auction_upstream { hash $cookie_stocker consistent; server unix:/var/run/ auction_1.sock; server unix:/var/run/ auction_2.sock; } server { listen unix:/var/run/ auction_1.sock; location / { proxy_pass http:// as-auction-1.default.svc.cluster.local: 9000; } } server { … }
  • 26. Revised Auction Architecture ●3 pharo images ●PUBSUB & SSE for async notifications
  • 27. $ kubectl top pods NAME CPU(cores) MEMORY(bytes) as-auction-1-dpl-dc699554b-c5jh4 115m 261Mi as-auction-2-dpl-5d8bbd7b5c-qwlbp 111m 236Mi as-auction-webhook-dpl-66f47557b-jn2dc 48m 194Mi as-marketplace-dpl-7d898866d4-w72cc 119m 736Mi DONE!!
  • 28. Questions? ● Visit allstocker.com ● Please stay tuned for more updates!