![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_migrating_GKE_7aaead3318/medium_migrating_GKE_7aaead3318.png)
ackee tech
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_migrating_GKE_7aaead3318/medium_migrating_GKE_7aaead3318.png)
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_sql_windows_dbca623c75/medium_sql_windows_dbca623c75.png)
5 Use Cases for SQL Window Functions in a Real-Life Cat System
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_backend_stack_blog_cover_4c10b92603/medium_backend_stack_blog_cover_4c10b92603.png)
Backend Tech-stack Today and Before
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_grpc_0dbde6eea4/medium_grpc_0dbde6eea4.png)
Welcome to gRPC, Please Follow Me…
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_android_app_widgets_c53dcc8205/medium_android_app_widgets_c53dcc8205.png)
How to Reliably Refresh Your Widgets
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_Sub_To_Big_Query_00eebeca6a/medium_Sub_To_Big_Query_00eebeca6a.png)
Send Messages From Pub/Sub To BigQuery Cheaper with Cloud Run
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_Cache_invalidation_blog_71335dcbe0/medium_Cache_invalidation_blog_71335dcbe0.png)
Redis: Cache Invalidation Done Better
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_GCP_health_958720ed49/medium_GCP_health_958720ed49.png)
GCP Health Checks: Why So Often?
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_devops21_7980f9f922/medium_devops21_7980f9f922.png)
A Summary on DevOps in Ackee 2021
![](https://storage.googleapis.com/ackee-blog-cms-static-files/medium_Blog_cover_ackee_node_js_cb03659a2d/medium_Blog_cover_ackee_node_js_cb03659a2d.png)