Müşterilerimiz İletişim EN

Ürün ve Servis Yönetimi Bölümü Göreviniz

Kartaca’ya göstermiş olduğunuz ilgi için teşekkür ederiz.

Sistem Yöneticisi ya da DevOps Mühendisi rollerimizin işe alım süreçlerinde sıradaki aşamada aşağıdaki görevi yerine getirmenizi bekliyoruz.

GÖREV:

Üç adet MongoDB container’ı ayağa kaldırın ve bu 3 container’ı Replica Set olarak High Available çalışacak şekilde yapılandırın. MongoDB cluster yapılandırıldıktan sonra bir init script ile stajdb adında bir database oluşturun ve bu database için authentication aktif edin. stajdb database’inde iller ve ülkeler adında iki collection oluşturup her collection’a 10 adet veri ekleyin.

Python ile bir web uygulaması geliştirin. Uygulamanın Docker container’ı içerisinde 4444 portundan çalışması / path’ine istek atıldığında “Merhaba Python!” yanıtını döndürmesi /staj path’ine istek atıldığında mongodb’de oluşturduğumuz stajdb database’indeki iller collection’ından rastgele bir il verisi döndürmesi gerekmektedir.

Go ile bir web uygulaması geliştirin. Uygulamanın Docker container’ı içerisinde 5555 portundan çalışması / path’ine istek atıldığında “Merhaba Go!” yanıtını döndürmesi /staj path’ine istek atıldığında mongodb’de oluşturduğumuz stajdb database’indeki ülkeler collection’ından rastgele bir ülke verisi döndürmesi gerekmektedir.

Metrik toplamak için prometheus container’ı kaldırın. Host’a ait metrikleri prometheus’a sunmak için Node exporter, container’lara ait metrikleri prometheus’a sunmak için Cadvisor kullanın. Prometheus’u Node Exporter ve Cadvisor metriklerini toplayacak şekilde konfigüre edin. Topladığınız metrikleri görselleştirmek için Grafana container’ı kaldırın, kullanıcı login bilgilerini ayarlayın (User:admin Password:admin). Grafana container’ı başladığında yapılandırdığınız prometheus’un datasource olarak ekli olmasını, Node exporter (id:1860) ile Cadvisor exporter (id:14282) dashboard’larının grafana dashboards’da ekli olmasını ve dashboard’larda metriklerin gözüküyor olmasını sağlayın.

traefik container’ı kaldırılıp 80 portuna gelen istekleri dinleyecek şekilde yapılandırın. kartaca.localhost adresine yapılan istekleri diğer container’lara yönlendirmek için traefik kullanın. kartaca.localhost adresinin /pythonapp path’ine istek atıldığında istekleri python uygulamasının /staj path’ine yönlendirin, /goapp path’ine istek atıldığında istekleri go uygulamasının /staj path’ine yönlendirin. kartaca.localhost/grafana path’inden grafana arayüzüne ulaşılmasını sağlayın. traefik’i sadece kartaca.localhost’a yapılan istekler için proxy uygulayacak şekilde yapılandırın.


DEĞERLENDİRME:

  • Kontrol edeceğimiz sistemde kartaca. localhost ve kartaca2.localhost adresleri 127.0.0.1 ip adresini çözecek.
  • “docker-compose up” komutu çalıştırıldıktan sonra mongodb cluster, python uygulama, go uygulama, traefik, prometheus, grafana, nodeexporter, cadvisor container’larının ayağa kalkması, ilgili port ve path’lere yapılan isteklere aşağıdaki örneklerdeki gibi yanıt dönülmesi beklenmektedir;

  • $ echo "127.0.0.1 kartaca.localhost" >> /etc/hosts
    $ echo "127.0.0.1 kartaca2.localhost" >> /etc/hosts
    
    $ docker-compose up
    
    $ curl localhost:4444
    "Merhaba Python!"
    
    $ curl localhost:4444/staj
    { "il": "tekirdag", "nufus": 1140200, "ilceler": ["hayrabolu", "malkara"] }
    
    $ curl localhost:5555
    "Merhaba Go!"
    
    $ curl localhost:5555/staj
    { "ulke": "turkiye", "nufus": 84000000, "baskent":"ankara" }
    
    $ curl kartaca.localhost/pythonapp
    { "il": "istanbul", "nufus": 16000000, "ilceler": ["beylikduzu", "esenyurt"] }
    
    $ curl curl kartaca.localhost/goapp
    { "ulke": "fransa", "nufus": 67000000, "baskent":"paris" }
     
    $ curl kartaca2.localhost/pythonapp
    404 page not found
    
    $ curl kartaca2.localhost/goapp
    404 page not found
    

  • http://kartaca.localhost/grafana adresinden grafanaya login olunabilmeli ve Node exporter, Cadvisor exporter dashboardları görüntülenebilmeli.

NOTLAR:

  • Görevdeki tüm gereksinimleri yerine getiremediyseniz bile, moralinizi bozmayın ve tamamladığınız kadarını bizimle mutlaka paylaşın.
  • Uygulamaların ayağa kalkması için gereken bütün kod ve yapılandırma dosyaları (Dockerfile, docker-compose.yaml) GitHub, GitLab, Bitbucket gibi erişime açık bir repo’ya gönderilerek, bağlantı adresi insankaynaklari@kartaca.com‘a iletilmelidir.
  • Repo üzerinden paylaşım sağlayamıyorsanız, bize indirilebilir dosyalara ulaşmamız için bir bağlantı iletin.

Başarılar!


Kartaca