SlideShare a Scribd company logo
1 of 38
Download to read offline
H A C K A T H O N 
Czyli jak zrobić sobie zawody 
z przygotowania do konferencji. 
l
{Foundation, Docker, nginx, Node.js, Meteor, 
Mongo, Python, Flaskr, Jinja, Ruby, SASS, 
HTML5, Bash, GitHub, Mailgun} = Warsjawa 2014 
l
Foundation 
n 
Mobile first, responsive, web frontend framework (podobny do Bootstrapa) 
HTML5 
SASS (kompilowany do CSS), kompilator i konfiguracja w Rubym
GitHub gh-pages 
n
warsjawa.pl 
github pages 
static page 
n
Przejście na szablony 
n 
Zmiany były powolne, dużo treści (prelegenci) powodowało dużo błędów. 
Więc wprowadziliśmy szablony (Python + Jinja + bash).
Docker 
n 
Pojawiła się potrzeba odpalenia projektu u innych. Dużo zależności (Python, 
Ruby, SASS, itd) mocno zniechęcały. 
Pojawił się więc Docker (aplikacja do zarządzania lekkimi kontenerami).
Docker 
n 
Dodatkowa enkapsulacja pomogła w dodawaniu nowych automatyzacji: dane 
przechowywane w YAMLu. 
Teraz chcąc wysłać stronę, robiliśmy git push na wskazane repo.
Request 
Frontend 
nginx static page 
n
Tiktalik 
l
Zalety 
l
Wady 
l
Tiktalik 
*.warsjawa.pl/* 
Frontend 
nginx static page 
l
Deployment v1 
Git Post-Receive Hook 
Procedura: 
● docker stop 
● docker rm 
● docker build 
● docker run 
l
Tiktalik 
*.warsjawa.pl/* 
Frontend 
nginx static page 
git push 
l
Deployment v2 
https://github.com/razius/github-webhook-handler 
Procedura: 
● docker stop 
● docker rm 
● docker build 
● docker run 
l
Deployment v2 
Staging 
Production 
l
Tiktalik Systemy 
zewnętrzne 
GitHub 
onCommit 
restart 
container 
*.warsjawa.pl/* 
Frontend 
nginx static page 
l
System do maili - Backend 
l
Przypadki użycia 
● Wysłyanie maili po rejestracji 
● Przekazywanie maili od prowadzących 
warsztat 
● Potwierdzanie użytkowników 
● Usługi dla NFC 
p
Stos technologiczny 
Python 
Flask 
mongo(mock) 
Czas wykonania testów <1s 
p
Tiktalik 
Backend Mailgun 
Mongo warsjawa 
Systemy 
zewnętrzne 
GitHub 
onCommit 
restart 
containers 
*.warsjawa.pl/* 
Frontend 
nginx static page 
p
Backend Fuckup 1 
Jednowątkowy python blokujący cały backend 
p
Backend Fuckup 2 
Długi czas odpowiedzi w przypadku niedostępności Mailguna 
p
Meteor 
n 
Meteor platforma do budowania aplikacji webowych (serwer i klient). 
W całości w JS (Node). 
Websockety. 
Mongo. 
meteor.com
Tiktalik 
workshops.warsjawa.pl 
Backend Mailgun 
Mongo warsjawa 
Systemy 
zewnętrzne 
GitHub 
onCommit 
restart 
containers 
*.warsjawa.pl/* 
Frontend 
nginx static page 
Meteor 
n
Godzina ‘zero’ 
Rejestracja VIP’ów przebiegła pomyślnie. 
Byliśmy spokojni i pewni siebie. 
n
Godzina ‘zero’ 
timeouty na serwerze meteor 
backend wołany asynchronicznie 
n
Godzina ‘zero’ 
brak danych w meteorze 
szpachla, szpachla, szpachla 
l
Godzina ‘zero’ 
400 osób się zarejestrowało 
wydaje się, że działa 
l
Godzina ‘zero’ 
zdychają JS’y 
● przeniesienie meteor na tiktalik 
● optymalizacja JS po stronie klienta 
n
Tiktalik 
Meteor rejestracja Backend Mailgun 
Mongo 
meteor warsjawa 
Systemy 
zewnętrzne 
GitHub 
onCommit 
restart 
containers 
*.warsjawa.pl/* 
Frontend 
nginx static page 
p
Działało, więc nie dotykaliśmy więcej 
l
Ale trzeba było wysłać potwierdzenia... 
l
Tiktalik 
Meteor rejestracja Backend Mailgun 
Mongo 
meteor warsjawa 
Systemy 
zewnętrzne 
GitHub 
onCommit 
restart 
containers 
*.warsjawa.pl/* 
Frontend 
nginx static page 
Wysyłka 
potwierdzeń l
user = { 
"_id" : ObjectId("507f191e810c19729de860ea"), 
"email": "jan@kowalski.pl", 
"name": "Janek", 
"key": "ASJHD@UE*G*HASDASIDHGUWGU", 
"isConfirmed": true, 
"emails": [] 
} 
l 
Before
user = { 
"_id" : ObjectId("507f191e810c19729de860ea"), 
"isConfirmed": true 
} 
l 
After
Tomasz Netczuk 
@netczuk 
netczuk.pl 
Tomasz Pęksa 
@tpeksa 
Michał Lewandowski 
@lewandm4 
blog.klkl.pl

More Related Content

What's hot

Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsThe Software House
 
LXC - kontener pingwinów
LXC - kontener pingwinówLXC - kontener pingwinów
LXC - kontener pingwinówgnosek
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Wprowadzenie do QML
Wprowadzenie do QMLWprowadzenie do QML
Wprowadzenie do QMLKildyt
 
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...PROIDEA
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Lokalny development z kubernetes
Lokalny development z kubernetesLokalny development z kubernetes
Lokalny development z kubernetesPiotr Mińkowski
 
Py2 - Py3 migration - Krzysztof Skarupa
Py2  - Py3 migration - Krzysztof SkarupaPy2  - Py3 migration - Krzysztof Skarupa
Py2 - Py3 migration - Krzysztof SkarupaSunscrapers
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be heroThe Software House
 
Design applications for the Cloud.
Design applications for the Cloud. Design applications for the Cloud.
Design applications for the Cloud. Maciej Sawicki
 
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...PROIDEA
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerMarek Będkowski
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
[WebMuses] Bajki z krainy danych
[WebMuses] Bajki z krainy danych[WebMuses] Bajki z krainy danych
[WebMuses] Bajki z krainy danychPrzemek Maciolek
 
HTTP/2 - praktyczne korzyści w realnym świecie
HTTP/2 - praktyczne korzyści w realnym świecieHTTP/2 - praktyczne korzyści w realnym świecie
HTTP/2 - praktyczne korzyści w realnym świecieThe Software House
 

What's hot (20)

Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.js
 
LXC - kontener pingwinów
LXC - kontener pingwinówLXC - kontener pingwinów
LXC - kontener pingwinów
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
Wprowadzenie do QML
Wprowadzenie do QMLWprowadzenie do QML
Wprowadzenie do QML
 
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
CONFidence 2018: "Small money, a lot of bugs" - Large scale bughunting dla ty...
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Lokalny development z kubernetes
Lokalny development z kubernetesLokalny development z kubernetes
Lokalny development z kubernetes
 
Py2 - Py3 migration - Krzysztof Skarupa
Py2  - Py3 migration - Krzysztof SkarupaPy2  - Py3 migration - Krzysztof Skarupa
Py2 - Py3 migration - Krzysztof Skarupa
 
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be hero
 
Design applications for the Cloud.
Design applications for the Cloud. Design applications for the Cloud.
Design applications for the Cloud.
 
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia Stanko
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
[WebMuses] Bajki z krainy danych
[WebMuses] Bajki z krainy danych[WebMuses] Bajki z krainy danych
[WebMuses] Bajki z krainy danych
 
HTTP/2 - praktyczne korzyści w realnym świecie
HTTP/2 - praktyczne korzyści w realnym świecieHTTP/2 - praktyczne korzyści w realnym świecie
HTTP/2 - praktyczne korzyści w realnym świecie
 

Similar to Warsjawa hackaton

PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPROIDEA
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big dataPiotr Guzik
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Przetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowychPrzetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowychleafnode
 
Node.js w dużej skali
Node.js w dużej skaliNode.js w dużej skali
Node.js w dużej skaliOnetIT
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring BootXSolve
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Chris Suszyński
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatykaOnetIT
 
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...Laravel Poland MeetUp
 
Docker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem TraefikDocker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem TraefikMichał Kurzeja
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...Future Processing
 

Similar to Warsjawa hackaton (20)

PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big data
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Przetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowychPrzetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowych
 
Node.js w dużej skali
Node.js w dużej skaliNode.js w dużej skali
Node.js w dużej skali
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatyka
 
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Larav...
 
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Docker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem TraefikDocker reverse proxy z użyciem Traefik
Docker reverse proxy z użyciem Traefik
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
[Quality Meetup #9] TestOps, QAOps - czy ktoś taki istnieje? - Aleksandra Kor...
 

Warsjawa hackaton