Giter Club home page Giter Club logo

helloworld's Introduction

Тестовое задание на написание веб-приложения helloworld

Исходные данные:

Реализовать тривиальное HTTP "Hello, world!" web-приложение на любом удобном Вам языке программирования и завернуть его в clound native окружение.

Требования:
- Dockerfile, который докеризует приложение.
- Приложение должно иметь health-check и ready-check.
- Приложение должно предоставлять metrics endpoint для Prometheus (метрики - на Ваше усмотрение).
- Grafana dashboard с визуализацией метрик.
- docker-compose.yml, который запускает приложение со всем необходимым окружением (Prometheus и Grafana).

Временем и инструментом для выполнение тестового задания Вы не ограничены. Любые другие аспекты реализации, которые не указаны в требованиях, могут быть выполнены на Ваше усмотрение.

Следующее будет плюсом:
- Kubernetes спеки приложения, либо Helm-чарт, для запуска его в Minikube (в дополнение к docker-compose.yaml).
- E2E-тесты, которые проверяют корректность докеризации приложения.

Решение:

Web-приложение

Реализовано на языке Java (Spring Boot) Добавлена одна кастомная метрика requests_count_total - количество запросов главной страницы Собранный jar файл специально не клал рядом с кодом - много места ест.

Docker (шаги 0 и 1 можно пропустить, так как собранный образ с данным сервисом внутри уже лежит на dockerhub)

  1. Необходимо собрать проект и получить helloworld-0.0.1.jar
IntelliJ IDEA > Maven > package

или

mvn package

кладем jar-файл в папку docker

  1. Собираем образ
cd docker
docker built -t helloworld .
  1. Стартуем docker-compose
docker-compose up -d
  1. Заходим и смотрим стартанувшие компоненты:
  • helloworld : localhost:8080 (metrics - localhost:8080/actuator/prometheus)
  • prometheus : localhost:9090
  • grafana : localhost:3000 (admin/admin)

Kubernetes

В папке k8s/helloworld лежит helm chart для нашего сервиса.
Установка чарта описана в файлике README.md Там реализован deployment c сервисом helloworld + readiness\liveness probes.
Так же там есть ingress, но хост надо будет добавлять себе в /etc/hosts

PS: docker-image предварительно загружен в dockerhub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.