Innsikt fra Bluetree | Hold deg oppdatert innen IT og teknologi.

[My Journey to CCIE Automation – Week 2] Inventory REST API + Microservices Architecture

Written by Bjørnar Lintvedt | 17 July, 2025
My journey continues

👋 Hi, I’m Bjørnar Lintvedt

I’m a Senior Network Consultant at Bluetree, working at the intersection of networking and software development.

As mentioned in last week’s post, I’m preparing for the CCIE Automation lab exam — Cisco’s most advanced certification for network automation and programmability. I’m documenting the journey here with weekly, hands-on blog posts tied to the blueprint.

Link to my GitLab Repo

 

Week 2

This week marked a shift in direction. Instead of building isolated tools, I’ve started developing a larger app made up of multiple microservices, each tackling relevant topics from the blueprint.

Everything now runs in containers via Docker Compose, with an eventual move to Kubernetes in mind.
This new approach feels more practical, modular — and let’s be honest — more fun!

This week’s blueprint focus was:

  • 2.1 Build, manage, and operate a Python-based REST API with a web application framework

Also touched on:

  • 4.1 Create a Docker image (including Dockerfile)

  • 4.2 Package and deploy a solution by using Docker Compose

 

This Week’s Focus: Inventory API + Service Architecture 

The main outcome this week was the creation of the Inventory API — now a standalone microservice forming the backbone of my app.

🔹 Inventory Service

  • Serves as a REST API for CRUD operations on device and link models. In addition you can get topology (all devices and links) in one separate API call.

Tech stack:

  • Flask + Flask-RESTx for the REST API and OpenAPI docs

  • Flask-SQLAlchemy for ORM and DB operations

  • SQLite as a lightweight starting point (with plans to move to Postgres maybe?)

  • Dockerfile to containerize the service

  • Docker Compose to orchestrate multiple services together

 

Refactoring Week 1 Code into Services

To move toward a modular microservice design, I’ve split the original Week 1 scripts into two new dedicated services:

🔹 Automation Service

  • Periodically (via cron job) fetches devices and links from Catalyst Center API
  • Pushes the data into the Inventory API to keep the inventory updated

🔸 Topology Service

  • Periodically queries the Inventory API for current device and link data
  • Generates network topology drawings, which is served through Nginx.

 

Service Interactions

🕵️‍♂️ Oh hey — did you spot that?
Yes, that’s right — the app now has a name: Nautix!
A mix of “network,” “automation,” and that irresistible -ix suffix that makes it sound like it does way more than it probably should. Also — let’s be honest — it sounds a bit naughty, which is fitting since the app probably won’t be production-ready anytime soon. 😅

 

Modular & Expandable Architecture

This microservice model makes it easier to scale and align with the CCIE Automation blueprint:

  • I’ll continue to build new services as I progress through the study plan — for example: orchestration service, health check service or telemetry services
  • Existing services like Inventory, Automation, and Topology will be improved and extended with more advanced functionality as new blueprint topics are covered.

 

Reflections from the Week
  • I had no prior Flask experience, but my Django background made concepts like routing, models, and serialization feel familiar.

  • I really liked working with Flask-RESTx — it's light, intuitive, and gives you input validation and OpenAPI docs for free.

  • Docker Compose will now be the foundation for running all future services in this CCIE prep app

  • Creating persistent storage for SQLite in Docker was easier than expected using volume mounts.

  • Running environment variables directly when running docker-compose command as a temp solution, until I get to the secrets management blueprint item.
  • There are probably loads of improvement to be done, but for now, I'm happy with the progress this week :)

 

📅 What’s Next (After Summer Vacation ☀️)
I’m now taking a short summer break, and will return to the CCIE Automation study plan in the last week of August. Week 3 will focus entirely on working with NETCONF:
Blueprint item 2.4 Create a NETCONF payload based on a given YANG module, and interpret the response

Blueprint item 2.5 Create a NETCONF filter by using XPath


Blueprint item 2.6 Configure network devices on an existing infrastructure using NETCONF and YANG analysis tools

I’ve decided to focus only on NETCONF in week 3. Expect more microservices, XML, and YANG tools — and of course, more Docker

 

🔗 Useful Links

 

Blog series