Menu / szukaj

Wysyłanie maili z Azure Functions – SendGrid

Staram się przekonać programistów, że obecnie powinniśmy zmienić nasze podejście do budowania aplikacji w sposób efektywny. Dotychczasowe budowanie aplikacji w sposób samodzielny od prawie zera powinniśmy zamienić na komponowanie rozwiązania przy wykorzystaniu gotowych elementów. Tak, aby ograniczyć ilość wytwarzanego przez nas kodu. Pewnie zgodzicie się, ze mną, że wraz ze zmniejszeniem ilości kodu, maleje również prawdopodobieństwo popełnienia błędu.

Taki podejście chciałbym zastosować w tym przypadku. Naturalnym wyborem dla wysyłania maili w przypadku Azure Functions jest usługa SendGrid. Czytaj dalej

Azure Function – Upload zdjęć do Azure Blob Storage

Dziś kolejny przykład użycia Azure Functions w kodzie produkcyjnym. Problem jest dość prosty – chcemy wykorzystać funkcję do wgrania zdjęcia do Azure Blob Storage. Oczywiście można było wgrać zdjęcie od razu do Azure Blob Storage, ale takie podejście powoduje dość silne uzależnienie się od tego rozwiązania. Z tego powodu została zastosowana funkcja jako element pośredni.

Funkcja ta stanowi API pozwalające na przesłanie zdjęcia zakodowanego w base64 do wybranego przez nas miejsca. Takie podejście pozwoli nam w przyszłości na łatwą zmianę wybranego rozwiązania służącego do przechowywania plików. Czytaj dalej

NDepend – krótka recenzja

Już jakiś czas temu napisał do mnie Patrick Smacchia i poprosił o napisanie, krótkiej recenzji jego aplikacji – NDepend. Chyba nie trzeba przedstawiać nikomu tego narzędzia – jest to kombajn do analizy naszego kodu. Możliwości jego są olbrzymie. Chcąc podejść do tej prośby profesjonalnie, postanowiłem poznać to narzędzie dość dokładnie przed napisaniem czegokolwiek. Niestety poległem. Mnogość funkcji i możliwość dostosowywania tego narzędzia powodują, że jest naprawdę ciężko. Używając go już ponad dwa miesiące mogę spokojnie napisać, że nie czuję się dość zaawansowanym użytkownikiem. Czytaj dalej

Caching w Azure Function – czyli jak podpiąć Redis’a

Pewnie już wiecie, ale tak w ramach przypomnienia… Microsoft przygotował niewielki zestaw bardzo przydatnych komponentów, które pozwalają na zintegrowanie naszej funkcji z następującymi usługami: Azure Storage, Azure Event Hubs, Azure Service Bus, Azure Mobile Apps, Azure Cosmos DB, Azure Notification Hubs, Twilio, SendGrid. Lista ta pozwala na zaspokojenie różnorakich scenariuszy. Ale jak zawsze chcielibyśmy coś więcej.

Dzisiaj chciałbym Wam pokazać jak w bardzo łatwy sposób można dodać cache do naszej funkcji. W przykładzie zostanie wykorzystany Redis. Pewnie zastanawiacie się po co? Niejednokrotnie mówiłem, że funkcje powinny być atomowe, bezstanowe, szybkie, … Rzeczywistość nie zawsze jest taka różowa. Czasami musimy coś zoptymalizować i zrobić rzecz nie do końca zgodnie z teorią. I tak było w tym przypadku. Czytaj dalej

Azure Functions – Lessons learned

Ostatnio wszystkie tematy związane z Chmurą oraz pojęciem Serverless stały się bardzo modne. Jednym z takich elementów są Azure Functions. Na stronie Microsoftu można przeczytać, że:

Azure Functions to rozwiązanie umożliwiające łatwe uruchamianie małych fragmentów kodu („funkcji”) w chmurze. Możesz napisać tylko kod rozwiązujący aktualny problem, nie martwiąc się o całą aplikację ani infrastrukturę do jej uruchomienia. Dzięki usłudze Functions programowanie może być jeszcze wydajniejsze i można korzystać z wybranego języka programowania, takiego jak C#, F#, Node.js, Python lub PHP. Płać tylko za czas działania kodu — platforma Azure jest skalowana zgodnie z potrzebami. Usługa Azure Functions pozwala tworzyć na platformie Microsoft Azure aplikacje niewymagające użycia serwera.

I rzeczywiście mógłbym pisać dużo o komforcie użycia, łatwości wdrożenia i jeszcze kilkunastu innych cechach, które urzekły mnie w tym rozwiązaniu. Super sprawdzają się w przypadku projektów, które nie potrzebują dużego backendu. Przetestowałem to rozwiązanie wielokrotnie i jestem z niego zadowolony.

Nie odbyło się jednak bez błędów, o których chciałbym wspomnieć – a dokładniej dwóch. Czytaj dalej

FluentValidation.Validators.UnitTestExtension wersja 1.1

Nowa wersja pakietu FluentValidation.Validators.UnitTestExtension jest dostępna. Pakiet umożliwia tworzenie testów jednostkowych Fluent Validator-ów w sposób bardziej efektywny.

W wersji 1.1 wprowadziłem następujące zmiany:

  • dodałem wsparcie do najnowszej wersji biblioteki FluentValidation 7.*,
  • wprowadziłem możliwość szybkiego testowania dwóch walidatorów – ScalePrecisionValidator oraz RegularExpressionValidator.

Projekt dostępny jest oczywiście na GitHubie.