SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Analiza semantyczna
artykułów prasowych w 5
sprintów z użyciem AWS
Michał Mońka
Michał Mońka
● Node.js developer z 2,5 letnim doświadczeniem
komercyjnym, z tego prawie rok w chmurze
● Miłośnik sportu, na pierwszym miejscu wspinaczki
Agenda
● Zarys projektu
● Omówienie wymagań technicznych
● Wykorzystane narzędzia
● Ile to kosztuje
● Napotkane problemy
Słowem wstępu
Wymagania
● Mechanizm logowania + proste zarządzanie użytkownikami
● Analiza artykułów pod kątem płci osób występujących w
tekście
● Rozpoznawanie płci osób występujących na obrazkach
● Sumowanie słów nacechowanych uprzedzeniem wobec płci
● Zestawienie ogólnego wyniku analizy artykułów z danymi z
Google Analytics
Pomysł
Wykorzystane narzędzia
Perigon API
● Artykuły potrafiły się zmieniać co request
● Dużo metryk, takich jak: słowa kluczowe, tematy, ocena
czytelników
● Możliwości parametryzowania zapytania
● Dobra dokumentacja
● Niskie rate limity w planie developer oraz bany na ip przy
zakładaniu nowych kont 🥶
● Stosunkowo drogi, ale w planie “biznes” cena ustalana
indywidualnie
Perigon API
Genderize API
● Wsparcie dla dużej ilości języków
● Darmowy dostęp, bez rejestracji (do 1000 imion/ dzień)
● Można zastąpić darmowymi bibliotekami/ api
Compromise
● Licencja MIT
● Ogromne możliwości
● Zdarzały się błędnie rozpoznane imiona, jako dwa różne
● Biblioteka do przetwarzania tekstu. Zawiera narzędzia do
analizy tekstu, takie jak rozpoznawanie części mowy,
rozpoznawanie nazw własnych, a także generowanie tekstu
Pora na głównego
bohatera- AWS
Serverless framework
● Jako TSH posiadamy duże doświadczenie
● Korzystamy z boilerplate, który umożliwia szybki
development
● Nie nadąża za zmianami w AWS
● Bardzo dobra dokumentacja
Jaką bazę wybraliśmy?
● RDS z Postgresem
● RDS Proxy do zarządzania pulą połączeń
● Typeorm
AWS Rekognition
● detectFaces() z aws-sdk
● Koszt: 1$ za 1000 requestów
● analiza trwała maksymalnie kilka sekund
Step functions
Na czym polegało liczenie
“gender score”?
● Słowa nacechowane uprzedzeniem wobec płci
● Występowanie kobiet/ mężczyzn w tekście
● Występowanie kobiet/ mężczyzn na zdjęciach
● Płeć autora
● Zaimki
Kalkulacji podlegały:
Jak dostarczyliśmy dane z
Google Analytics?
Co zawierał raport?
● Tematy z najlepszymi opiniami
● Tematy z najlepszym wynikiem ogólnym
● Tematy z najgorszym wynikiem ogólnym
● Tematy popularne wsród kobiet
● Ilość wystąpień mężczyzn/ kobiet na zdjęciach
Raport
Co poszło nie tak?
Napotkane problemy
● Ogromne ilości analizowanych danych
● Limity step function (max liczba eventów 25000)
● Problem typeorm z rds-proxy (rds-proxy zamykał
połączenie, a typeorm widział je jako otwarte)
● Przy dużej ilości równoległych lambd, rds-proxy otwierał za
dużo połączeń i zapychał bazę
● Brak czasu na integrację z Google Analytics API
Ile to wszystko kosztuje?
● RDS - 35$
● RDS Proxy - 22$
● EC2 - 15$
● Secrets Manager- 1.5$
● CloudWatch - 0.60$
● S3 - 0.23$
● Lambda - 0.60$
● Reszta - <0.05$
Koszta
Pytania?
tsh.io
Dziękuję za uwagę!
Michał Mońka
Junior Node.js Developer

Contenu connexe

Similaire à Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS

[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego
[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego
[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnegoOWASP
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...The Software House
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Elasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla WielkodanowcówElasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla WielkodanowcówŁukasz Kuczyński
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiKrzysztof (Chris) Ozog
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziJakub Wiśniewski
 
KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...
KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...
KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...Filip Dębowski
 
multi-tier cache at gog.com - 4developers
multi-tier cache at gog.com -  4developersmulti-tier cache at gog.com -  4developers
multi-tier cache at gog.com - 4developersMaciej Włodarkiewicz
 

Similaire à Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS (9)

[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego
[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego
[Wroclaw #2] RNB - system raportowania dla potrzeb testu penetracyjnego
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
The story of GOG.com Cache
The story of GOG.com Cache The story of GOG.com Cache
The story of GOG.com Cache
 
Elasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla WielkodanowcówElasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla Wielkodanowców
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | Codesushi
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądzi
 
KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...
KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...
KrakSpot #13 Jaromir Działo - Działaj globalnie, czyli Topicmarks w dolinie k...
 
multi-tier cache at gog.com - 4developers
multi-tier cache at gog.com -  4developersmulti-tier cache at gog.com -  4developers
multi-tier cache at gog.com - 4developers
 

Plus de The Software House

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...The Software House
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?The Software House
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?The Software House
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeThe Software House
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?The Software House
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptThe Software House
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptThe Software House
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLThe Software House
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychThe Software House
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciThe Software House
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case studyThe Software House
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejThe Software House
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachThe Software House
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsThe Software House
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeThe Software House
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduThe Software House
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?The Software House
 

Plus de The Software House (20)

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
 
Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon Chime
 
Migracje danych serverless
Migracje danych serverlessMigracje danych serverless
Migracje danych serverless
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?
 

Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS

  • 1. Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS Michał Mońka
  • 2. Michał Mońka ● Node.js developer z 2,5 letnim doświadczeniem komercyjnym, z tego prawie rok w chmurze ● Miłośnik sportu, na pierwszym miejscu wspinaczki
  • 3. Agenda ● Zarys projektu ● Omówienie wymagań technicznych ● Wykorzystane narzędzia ● Ile to kosztuje ● Napotkane problemy
  • 5. Wymagania ● Mechanizm logowania + proste zarządzanie użytkownikami ● Analiza artykułów pod kątem płci osób występujących w tekście ● Rozpoznawanie płci osób występujących na obrazkach ● Sumowanie słów nacechowanych uprzedzeniem wobec płci ● Zestawienie ogólnego wyniku analizy artykułów z danymi z Google Analytics
  • 7.
  • 9. Perigon API ● Artykuły potrafiły się zmieniać co request ● Dużo metryk, takich jak: słowa kluczowe, tematy, ocena czytelników ● Możliwości parametryzowania zapytania ● Dobra dokumentacja ● Niskie rate limity w planie developer oraz bany na ip przy zakładaniu nowych kont 🥶 ● Stosunkowo drogi, ale w planie “biznes” cena ustalana indywidualnie
  • 11. Genderize API ● Wsparcie dla dużej ilości języków ● Darmowy dostęp, bez rejestracji (do 1000 imion/ dzień) ● Można zastąpić darmowymi bibliotekami/ api
  • 12. Compromise ● Licencja MIT ● Ogromne możliwości ● Zdarzały się błędnie rozpoznane imiona, jako dwa różne ● Biblioteka do przetwarzania tekstu. Zawiera narzędzia do analizy tekstu, takie jak rozpoznawanie części mowy, rozpoznawanie nazw własnych, a także generowanie tekstu
  • 14. Serverless framework ● Jako TSH posiadamy duże doświadczenie ● Korzystamy z boilerplate, który umożliwia szybki development ● Nie nadąża za zmianami w AWS ● Bardzo dobra dokumentacja
  • 16. ● RDS z Postgresem ● RDS Proxy do zarządzania pulą połączeń ● Typeorm
  • 17. AWS Rekognition ● detectFaces() z aws-sdk ● Koszt: 1$ za 1000 requestów ● analiza trwała maksymalnie kilka sekund
  • 19.
  • 20.
  • 21. Na czym polegało liczenie “gender score”?
  • 22. ● Słowa nacechowane uprzedzeniem wobec płci ● Występowanie kobiet/ mężczyzn w tekście ● Występowanie kobiet/ mężczyzn na zdjęciach ● Płeć autora ● Zaimki Kalkulacji podlegały:
  • 23. Jak dostarczyliśmy dane z Google Analytics?
  • 25. ● Tematy z najlepszymi opiniami ● Tematy z najlepszym wynikiem ogólnym ● Tematy z najgorszym wynikiem ogólnym ● Tematy popularne wsród kobiet ● Ilość wystąpień mężczyzn/ kobiet na zdjęciach Raport
  • 27. Napotkane problemy ● Ogromne ilości analizowanych danych ● Limity step function (max liczba eventów 25000) ● Problem typeorm z rds-proxy (rds-proxy zamykał połączenie, a typeorm widział je jako otwarte) ● Przy dużej ilości równoległych lambd, rds-proxy otwierał za dużo połączeń i zapychał bazę ● Brak czasu na integrację z Google Analytics API
  • 28. Ile to wszystko kosztuje?
  • 29. ● RDS - 35$ ● RDS Proxy - 22$ ● EC2 - 15$ ● Secrets Manager- 1.5$ ● CloudWatch - 0.60$ ● S3 - 0.23$ ● Lambda - 0.60$ ● Reszta - <0.05$ Koszta
  • 31. tsh.io Dziękuję za uwagę! Michał Mońka Junior Node.js Developer