OpenEdge 12.5

OpenEdge 12.5, to kolejna wersja z serii non-LTS Release – skierowana do tych, którzy czekają na wszelkie nowinki techniczne. Przedstawię tutaj pokrótce niektóre z nich.

Niedawno pisałem o nowym darmowym produkcie OpenEdge Command Center. Z wersją 12.5 możemy pobrać OECC w wersji 1.1, dzięki której możemy uzyskać informacje nie tylko o stanie poszczególnych instancji PASOE, ale także o ich aplikacjach. Po lewej stronie na głównym panelu widać nową ikonę (podświetlona na niebiesko) – po kliknięciu w nią znajdziemy się w widoku ABL Applications.

Składa się on z kilku okien. W pierwszym od lewej, widać listę instancji. Dalej, dla wybranej instancji, widać szczegółowe informacje nt aplikacji.
Musze przyznać, że śledzę rozwój tego produktu z dużym zaciekawieniem. Zyska on bardzo na wartości gdy pojawią się możliwości monitorowania baz danych.

W zarządzaniu PASOE pojawiło się nowe rozszerzenie dla komendy TCMAN i PASMAN – OESERVER. Jest ono zalecanym narzędziem do uruchamiania i zatrzymywania PASOE. Obsługuje dodatkowe parametry, aby zamknąć powiązane sesje klienta APSV i zebrać bardziej szczegółowe informacje o instancji. W celu zapewnienia kompatybilności OESERVER obsługuje istniejące parametry PASOESTART. Poniżej widać kilka parametrów z długiej listy komendy OESERVER.

Przykład działania komendy pasman oeserver -restart oraz –status (status wyświetla więcej informacji niż query). Na końcu podawane są informacje nt agentów i sesji.

Pełną listę parametrów znajdziecie tutaj.

Integracja OpenEdge z Apache Kafka – Kafka to otwarta, rozproszona platforma do strumieniowego przesyłania wydarzeń (event-streaming), szeroko stosowana w wielu branżach i organizacjach. Zapewnia przechwytywanie danych w czasie zbliżonym do rzeczywistego ze źródeł, takich jak bazy danych, aplikacje, czujniki, urządzenia mobilne i usługi w chmurze.

OpenEdge udostępnia nowe OpenEdge.Messaging API do wysyłania wiadomości do klastra Kafki poprzez Kafka producer i odbierania wiadomości z tego klastra przez Kafka consumer.

Progress Developer Studio dla OpenEdge obsługuje teraz inteligentną kompilację. Kiedy programista ABL wprowadza zmiany w pliku i go kompiluje, Developer Studio automatycznie kompiluje także wszystkie inne pliki, których mogą dotyczyć te zmiany. Dzięki temu identyfikowane są wszystkie błędy kompilacji wprowadzone w wyniku zmian w kodzie.

Na zakończenie chciałbym wspomnieć o istotnym ułatwieniu w procesie odtwarzaniu bazy po awarii z backupu i plików AI. Administratorzy mogli mieć problem w szybkim określeniu kolejności extentów. W wersji OE 12.5, wprowadzono nowe narzędzie do komendy rfutil,  AIMAGE SUMMARY, które uruchamia szybkie skanowanie informacji potrzebnych do zidentyfikowania plików AI.

Jak zwykle, po więcej nowości odsyłam do dokumentacji i internetu.

OpenEdge Command Center

Czytelnicy niniejszego bloga znają podstawowy i sztandarowy produkt służący do monitorowania systemów – OpenEdge Management (OEM) oraz jego uboższą wersję OpenEdge Explorer (OEE).
Produkt ten został wprowadzony po raz pierwszy wiele lat temu pod nazwą Fathom Management w wersji V9. Wciąż jest rozwijany i świetnie spisuje się w małych i średnich sieciach.

Tym razem chciałbym przybliżyć nowy produkt, OpenEdge Command Center (OECC) służący do zarządzanie wieloma zasobami i instalacjami OpenEdge na różnych komputerach i różnych wersjach OpenEdge.

Pierwsza wersja OpenEdge Command Center została stworzona z myślą o efektywnym zarządzaniu PASOE oraz, w przyszłości, bazami danych. Aktualna wersja 1.0 wspiera OE 12.2.5 i wyższe. Nie ma wsparcia wstecz.
OECC jest darmowe dla posiadaczy licencji OE, podobnie jak OEE i ma na celu uproszczenie ogólnego zarządzania platformą OpenEdge.
Serwer OpenEdge Command Center jest obsługiwany na następujących platformach:

  • Ubuntu 18.04 LTS
  • Oracle Linux 8
  • Red Hat Enterprise Linux 8
  • SUSE Linux Enterprise Server 15
  • CentOS Linux 8
  • Windows 64

Można także uruchomić OpenEdge Command Center Server na 64-bitowym serwerze Linux z obsługą chmury, który jest skonfigurowany z MongoDB ATLAS.
Jednym z celów OECC jest zastąpienie produktu OEE, ze względu na niektóre problemy, które były zgłaszane przez użytkowników jak np. przestarzały interfejs, “ciężki” proces zdalnego AdminServera wymagający otwarcia 4 portów czy to, że API muszą być wyeksponowane w standardzie OpenAPI.

Serwer OECC można wdrożyć jako pojedynczy węzeł lub, dla zapewnienia wysokiej dostępności, jako klaster wielowęzłowy. Aby zapewnić wysoką dostępność, serwer współpracuje ze wszystkimi load balancerami obsługującymi transporty HTTP/HTTPS oraz protokoły websocket, takie jak Nginx, Serwer HTTP Apache, AWS, ELB/ALB itp.
OECC do przechowywania danych korzysta z bazy danych MongoDB oraz magazynu plików (patrz rysunek).


MongoDB to nierelacyjna baza, która przechowuje dane w postaci dokumentów w formacie podobnym do JSON. Są w niej zawarte wszystkie szczegóły dotyczące wykrytych komponentów OE takich jak PASOE (w przyszłości także baz danych OE) oraz ustawienia konfiguracyjne OECC. Instalacja bazy MongoDB jest wymagana przed instalacją serwera OECC, który wspiera następujące wersje (www.mongodb.com):

  • MongoDB Community Server
  • MongoDB Atlas running on AWS, Azure, and Google Cloud Platform (GCP)
  • MongoDB Enterprise Edition

Oprócz bazy część danych jest przechowywana w postaci repozytorium plików. Mieszczą się tu informacje o połączeniu z bazą danych, konfiguracji bezpieczeństwa i logowania itp.
O instalację MongoDB (podobnie jak i Java JDK) klient musi zadbać we własnym zakresie.

Ażeby dane były pobierane z różnych środowisk, na każdej maszynie trzeba zainstalować agenta OECC. Jest to lekki proces instalujący się razem z OE. Niezależnie od tego, czy masz jedną czy więcej instalacji OpenEdge na maszynie wystarczy zainstalować jednego agenta (OE 12.2.5 i wyżej).

Proces agenta działa autonomicznie; trzeba tylko upewnić się że jest poprawnie uruchomiony. Dla bezpiecznego połączenia z serwerem OECC trzeba z konsoli wygenerować unikalny klucz dla każdego agenta.

Cały proces konfiguracji i monitorowania przeprowadzamy z konsoli dostępnej z przeglądarek internetowych (HTTP/HTTPS), patrz przykład poniżej.

OpenEdge Command Center to bardzo ciekawy produkt, który obecnie monitoruje tylko procesy PASOE, ale w najbliższym czasie ma być rozszerzony także o procesy baz danych. Warto jest go zainstalować i przetestować.

OpenEdge 12.4

Najnowsza wersja OE 12.4 pojawiła się jako non-LTS Release. Ponieważ dostaję pytania w tej sprawie, kilka słów wyjaśnienia.
Wersja non-LTS (Non-Long Term Supported), jak sama nazwa wskazuje, jest bez długotrwałego wsparcia technicznego i jest przeznaczona dla tych, którzy wymagają najnowszych rozwiązań i poprawek. Wersja ta zapewnia również klientom możliwość używania i testowania funkcji, które pojawią się w nadchodzących wersjach obsługiwanych długoterminowo.
Wersja LTS (Long Term Supported) umożliwia kilkuletnie wsparcie techniczne i większą stabilizację. Dla przykładu: ostatnia wersja LTS to 12.2 z datą wygaśnięcia 10.2028, a dla wersji OE 11 to 11.7 (04.2025). OE 12.1, która jest non-LTS wygasa w 09.2022, więc za ok. rok (więcej informacji znajdziecie tutaj). Warto pamiętać o tym planując migrację do konkretnej wersji.

Zaczynamy, podobnie jak dla OE 12.3, od nowinek w definiowaniu zmiennych.
Od OE 12.4 dopuszczalne są poniższe konstrukcje, wraz z działaniami:

VAR INT a = 50, b = 20, x = a + b , y = a - b, z = x - y.

Poniższy przykład pokazuje definiowanie i inicjowanie zmiennych za pomocą funkcji standardowej, funkcji zdefiniowanej przez użytkownika, oraz metody:

VAR DATETIME dtm = DATETIME(TODAY,MTIME).
VAR INTEGER x = myFunction().
VAR INTEGER y = classMethod(output v).

Tutaj, z kolei, widzimy przykład definiowania określonych i nieokreślonych elementów macierzy i inicjowanie ich za pomocą wyrażenia:

VAR INT[2] w = [123, a + b].
VAR INT[3] x = [funct( ), 123, a + b].
VAR INT[ ] y = [123, a + b].
VAR INT[ ] z = [funct( ), 123, a + b].

Wprowadzono nową instrukcję języka ABL AGGREGATE do obliczania zagregowanych wartości w bazie danych
po stronie serwera. Wcześniej obliczenia te były wykonywane po stronie klienta przy użyciu instrukcji ACCUMULATE
i funkcji ACCUM.
Teraz można użyć pojedynczej instrukcji AGGREGATE dla COUNT, TOTAL i AVERAGE. Instrukcja AGGREGATE upraszcza kod i poprawia wydajność ponieważ obliczenia są wykonywane po stronie serwera bazy danych. Patrz poniższy przykład:

VAR DECIMAL avgBalance.
AGGREGATE avgBalance = AVERAGE(Balance) FOR Customer
WHERE Country EQ 'USA' AND City EQ 'Chicago'.
MESSAGE "Average balance: " avgBalance
VIEW-AS ALERT-BOX.

Ważną nowością dla administratorów jest wprowadzenie zastrzeżonego trybu bazy danych (restricted database access).
Pamiętacie zapewne, że możliwe jest włączenie w bazie trybu quiet point. Wstrzymuje on aktywne transakcje aż do momentu jego wyłączenia. Są jednak sytuacje gdy trzeba wykonać operacje administracyjne nie martwiąc się o niekompletne transakcje czy nowe logowania w trakcie pracy np: kasowanie dużej ilości niepotrzebnych danych, synchronizacja z innym źródłem, zrzut i ładowanie rekordów itd.
Tryb pracy restricted online umożliwia wykonywanie takich zadań z wykorzystaniem puli buforów czy wspomagających procesów asynchronicznych.

proutil [nazwa-bazy] -C dbrestrict dbadmin enable disconntimeout 500
Powyższa komenda umożliwia dostęp do bazy jedynie dla procesów administracyjnych (database utilities). Ustawiono opcjonalny parametr odłączenia użytkowników na 500 s.
Akcja status pozwala na podgląd czy dany tryb został ustawiony. Patrz na poniższy zrzut ekranu:

Tryb dbadmin nie jest jedynym w OE 12.4. Są jeszcze tryby:
datamove – ograniczenie wszystkich operacji z wyjątkiem PROUTIL DATAMOVE
partitioncopy – ograniczenie wszystkich operacji z wyjątkiem PROUTIL PARTITIONMANAGE COPY
rollforward – ograniczenie wszystkich operacji z wyjątkiem RFUTIL ROLL FORWARD.
Dla każdego trybu można stosować akcje: enable, disable, status.

Inne ciekawe rozwiązania w OE 12.4 z zakresu “Continuous Operations” to zdefiniowanie domyślnego obszaru typu II dla tworzenia nowych obiektów bazodanowych (tabele, indexy, LOBs), uproszczony mechanizm obcinania (truncate) danych w tabeli online czy poprawiony mechanizm zarządzania obszarem before-image. Został on wprowadzony w OE 12.3 w procesie watchdog, a w OE 12.4 to już niezależny proces uruchamiany poleceniem probim [nazwa-bazy].

Wprowadzona została konsola do zarządzania w chmurze OpenEdge Command Center wersja 1.0 , która umożliwia zarządzanie zasobami i instalacją produktów OpenEdge na różnych komputerach i w różnych wersjach OpenEdge.

Po więcej nowości zapraszam do dokumentacji OE.

MOVEit Automation – podstawy

Dzisiaj chciałbym przedstawić podstawy drugiego produktu Ipswitch – MOVEit® Automation.
MOVEit Automation (poprzednia nazwa MOVEit Central) pozwala w łatwy sposób zautomatyzować złożone przepływy danych (workflows) bez konieczności programowania.
Przepływy złożone są z zadań (tasków), a te z kolei mogą być uruchamiane wg harmonogramu, sterowane zdarzeniami lub na żądanie. Zadania mogą wymieniać pliki między systemami wewnętrznymi i zewnętrznymi, w tym serwerami MOVEit Transfer, przy użyciu wielu protokołów i przetwarzać pliki za pomocą wielu wbudowanych funkcji.

O ile miejsce MFT jest w strefie DMZ, to MA powinien znajdować się w bezpiecznej strefie sieci wewnętrznej (patrz rysunek poniżej).

Poniżej widzimy podobną architekturę, gdzie zamiast MFT jest inny produkt z grupy Ipswitch – WS_FTP Server. Możliwe są inne rozwiązania, serwery innych producentów, pominięcie strefy DMZ i połączenie np. z chmurą (MOVEit Cloud), ale o tym innym razem.

MOVEit Transfer (MFT) łatwo skonfigurować do współpracy z MOVEit Automation. W tym celu w MFT dodajemy użytkownika np. micentral z uprawnieniami admina.
Konto to będzie wykorzystywane do wysyłania dużej liczby pakietów dlatego wyłączamy dla niego notyfikacje. Można ustawić odpowiednie zabezpieczenia jak np. mocne hasło czy brak wygaśnięcia konta.
Logujemy się do MOVEit Automation, widzimy główne menu.

klikamy na HOSTS i Add Host. Z listy kilkunastów typów hostów wybieramy MOVEit Transfer.

Podajemy IP oraz dane logowania użytkownika micentral.

Można wprowadzić ograniczenia Limits i Timeouts itd. oraz przetestować połączenie.
Przejdźmy teraz do jednej z podstawowych czynności, tzn. do definiowania tasków.
W głównym menu wybieramy TASKS i Add Task.

Jak widać są trzy rodzaje tasków. Każdy rodzaj ma inne przeznaczenie. Najczęściej definiuje się taski typu Traditional, które zaspokajają większość potrzeb jakie występują w systemie.
Utwórzmy przykładowy tradycyjny task o nazwie myFirstTask. Pierwszym krokiem jest wybór kroku w definiowaniu (przycisk Step): Source, Process, Destination.

Zaczynam od źródła, czyli Source.

Wybieram dodany wcześniej serwer MFT oraz katalog i wzorzec plików, które będą przetwarzane. Możemy dodać czynności po udanym transferze jak np. skasować pliki, zmienić ich nazwę itp. Jeśli klikniemy w opcji Step na Process, dostaniemy listę skryptów do wyboru. Ja ten krok tutaj pominę.

Wybieram natomiast krok Destination, a w nim podaję adres email, na który pliki mają być wysłane.

OK, następny krok to zdefiniowanie harmonogramu (Schedule).

W kroku Next Action można wybrać Send Email, co jest rodzajem notyfikacji oraz ewentualnie Run Task, czyli uruchomienie innego wcześniej zdefiniowanego tasku. W ten sposób można zdefiniować cały cykl zadań.
OK, mój task ma być uruchamiany tylko we wtorki o określonej godzinie. Musimy go jeszcze włączyć i po pewnym czasie mamy raport z jego działania.

Zadania zaawansowane (Advanced Task) podobnie do zadań tradycyjnych mogą również korzystać z procesów. Mogą ponadto używać elementów warunkowych IF i FOR, aby określić, czy i kiedy inne elementy mają być uruchomione.
Elementy te zapewniają kontrolę przepływu pracy bez konieczności programowania.
Trzecim typem zadań sa zadania synchronizujące (Synchronization Task).

Ich zadaniem jest synchronizacja folderów, dlatego konfiguracja składa się z folderu A, folderu B i strzałki określającej kierunek synchronizacji.

MOVEit Automation, podobnie do MFT gwarantuje dostarczenie danych, szyfrowanie danych w spoczynku i szczegółową kontrolę dostępu. Na tym zakończę to wprowadzenie do systemu MA.
Jeśli ktoś ma pytania to proszę o kontakt na grupie PUG Poland.

OpenEdge 12.3

Powróćmy do tematu związanego z OpenEdge, ponieważ już od pewnego czasu mamy na rynku nową wersję OE 12.3.
Zacznijmy od nowinki dla programistów; dodano nową, bardziej zwięzłą instrukcję definicji zmiennych. Do tej pory ile zmiennych chcieliśmy zdefiniować, tyle musieliśmy wstawić definicji. Obecnie zapis jest krótszy, a w jednej instrukcji można zdefiniować wiele zmiennych. Zmienne zdefiniowane poprzez nową instrukcję są zawsze NO-UNDO.

Następna nowinka związana jest z definicją tablicy (extentu) o nieokreślonym rozmiarze. Rozmiar ten można teraz określić podczas fazy runtime, nawet jeśli tablica ma przypisane wartości początkowe.

W ABLu wprowadzono także operatory przypisania (+=, -=, *=, /=) do wykonywania operacji i przypisywania
wartość, używając skróconej notacji.

Od 12.3 jeśli zachodzi potrzeba aktualizacji aplikacji ABL, przy czym ta aktualizacja jest związana z nowymi elementami schematu, nie trzeba już
restartować maszyny wirtualnej ABL (AVM).

W OpenEdge 12.3 dodano ciekawą opcję komendy PROUTIL: PROUTIL TABLEREORG – umożliwia to reorganizację pofragmentowanych danych w tabeli, podczas gdy sama tabela pozostaje dostępna dla operacji OLTP (przetwarzanie transakcji online). Nowy proces zastępuje długotrwałe operacje zrzutu i ładowania danych oraz odbudowy powiązanych indeksów. Rekordy tabeli muszą znajdować się w tym samym obszarze przechowywania typu II. Operacja ta obsługuje także tabele multi-tenant oraz podzielone na partycje.

Kolejne parametry mogą być modyfikowane online, tym razem dla brokera secondary.
Maximum Clients per Server (-Ma)
Maximum Dynamic Server (-maxport)
Minimum Clients per Server (-Mi)
Minimum Dynamic Server (-minport)
Message Buffer Size (-Mm)
Maximum Servers per Broker (-Mpb)
Pending Connection Time (-PendConnTime)

Zmiany parametrów można dokonać w R&D -> opcja 4. Administrative Functions -> 16. Adjust Startup Parameters.

Jest jeszcze kilka ciekawych zmian związanych z tzw. Continuous Operations, bezpieczeństwem, programowaniem, ale to już musicie poszukać w sieci sami.

MOVEit Transfer – klient

W poprzednim artykule opowiedziałem o głównych cechach systemu MOVEit Transfer zainstalowanego na systemie serwerowym. Teraz napiszę o dostępie do niego z poziomu klienta. Potrzebna jest do tego osobna licencja Ad-Hoc Transfer, dzięki której użytkownik posiadający konto w systemie MFT może zainstalować dodatkowe komponenty i mieć dostęp poprzez przeglądarkę webową lub Microsoft Outlook. Użytkownicy mogą więc wymieniać się wiadomościami, przesyłać pliki, co wygląda podobnie do zwykłego systemu Outlook.

Są jednak istotne różnice.Załączniki są wysyłane jako część pakietu nie do odbiorcy, ale na serwer MFT.Do odbiorców wysłany jest e-mail z powiadomieniem o nowym pakiecie.Odbiorca może kliknąć link w tym powiadomieniu, zalogować się do MFT i odebrać pakiet.

Konfiguracja tzw. Moveit Connectora jest bardzo prosta. Potrzebujemy tylko dane logowania użytkownika systemu MFT i oczywiście adres hosta.

W programie Microsoft Outlook, jeśli chcemy skorzystać z nowej możliwości wysyłania pakietów wybieramy MOVEit Send i otrzymujemy poniższy ekran.

Wiadomość możemy wysłać tradycyjnie lub poprzez Send through MOVEit.
Na dole mamy ustawienia: Message body secured oznacza, że treść wiadomości, podobnie jak załączniki, będzie dostępna dopiero po zalogowaniu do MFT. Ustawienie czasu wygaśnięcia i max. ilość pobrań załączników określa administrator. Parametry te synchronizują się z serwerem.

Odbiorca może odpowiedzieć na wiadomość, ewentualnie dodać własne załączniki, ale tylko jeśli takie działanie jest dozwolone. Administrator systemu MFT ma szerokie pole do działania; może np. określać kto może wysyłać i odbierać pakiety, ustawiać limity na poziomie użytkownika lub pakietu oraz kontrolować terminy ważności i pobierania pakietów.

Bardzo duże pliki i dużą ilość załączników można wysyłać szybko i bezpiecznie, unikając ograniczeń serwera pocztowego.

Poniżej znajduje się przykładowy fragment wiadomości jaką odbiorca otrzymuje do skrzynki email. Jest tylko link do systemu. Może on otrzymać w oddzielnej wiadomości hasło do logowania, ale jest to tylko jedna z możliwości. Hasło może być przekazane także w sposób “manualny”.

Jeśli odbiorca nie jest zdefiniowany w systemie tworzony jest użytkownik tymczasowy TempUser a jego nazwa to adres email.

Jest jeszcze jeden produkt typu kienckiego MOVEit Client – bardzo prosty w obsłudze, dający dostęp do katalogu domyślnego oraz katalogów współdzielonych.
Zobaczmy, że w przykładowym systemie dwóch użytkowników (testuser, user1) ma dostęp do katalogu myshared. Ich uprawnienia różnią się nieco, ale obaj mogą wymieniać się danymi.

Użytkownik user1 umieścił w katalogu dwa pliki, które testuser może teraz pobrać i ew. umieścić swoje.

Ponieważ testuser ma uprawnienie List Users może klikając na ikonkę po prawej stronie podejrzeć kto współdzieli ten folder oraz jakie ma w nim uprawnienia.

MOVEit Transfer – podstawy systemu

Do tej pory wszystkie artykuły były związane z technologią OpenEdge. Najwięcej jest poświęconych oczywiście serwerowi aplikacji PASOE. Pora na małą zmianę.
W pierwszej połowie 2019 r. Progress zakupił firmę Ipswitch, Inc., specjalizującą się w rozwiązaniach związanych z bezpiecznym przesyłaniem danych oraz monitorowaniem i zarządzaniem zasobami sieciowymi.

MOVEit® Transfer (poprzednia nazwa MOVEit® DMZ) to cały system do bezpiecznego przetwarzania, przechowywania i przesyłania pakietów.

Produkty z serii MOVEit zapewniają kompleksowe rozwiązania, do bezpiecznej obsługi wrażliwych informacji takich jak dane finansowe, dokumentacja medyczna, dokumenty prawne czy dane osobowe.

No dobrze, powiecie, ale mamy serwery FTP, pocztę elektroniczną – czy to nie to samo i do tego za darmo?

Zabezpieczenia poczty elektronicznej nie zawsze są zgodne z wymaganiami korporacji, a załączane do emaili pliki mają spore ograniczenia dotyczące rozmiaru.

Serwery FTP to oczywiście popularny sposób bezpiecznego przesyłania dużych plików. Problem jest jednak gdy chcemy przekazywać dane wrażliwe (jak powyżej) przy zastosowaniu wymaganych, określonych zabezpieczeń, mieć gwarancję dostarczenia informacji, a do tego tworzyć raporty dotyczące wybranych transferów.

MOVEit® Transfer (MFT) dostarcza bezpieczne usługi przesyłania danych SFTP/S i HTTPS.
Ponadto, dane w systemie MFT są automatycznie szyfrowane nie tylko podczas transferu lecz także w spoczynku.

Zobaczmy dwie podstawowe konfiguracje MFT. Poprzednia nazwa produktu to, jak wspomniałem MOVEit® DMZ, przy czym DMZ oznacza strefę zdemilitaryzowaną, a więc strefę “ograniczonego zaufania” gdzie ryzyko włamania jest zwiększone. W strefie tej umieszcza są serwery, które świadczą usługi użytkownikom sieci wewnętrznej, którzy muszą kontaktować się z użytkownikami sieci zewnętrznej. Po prawej stronie schematu mamy wewnętrznych użytkowników korporacji, która musi mieć bezpieczny dostęp także do użytkowników zewnętrznych (lewa strona).


Zabezpieczenia te można jeszcze podnieść stosując produkt MOVEit Gateway (rysunek poniżej). Miedzy nim a serwerem MFT konfiguruje się tzw. tunelowanie.

Jeśli chodzi o architekturę to nie koniec możliwości, ale na początek poprzestaniemy na tych dwóch prostych przykładach.

MFT jest produktem serwerowym instalowanym na platformie Windows Server. Oznacza to, że próba zainstalowania na maszynie klienckiej zakończy się niepowodzeniem.
Produkt ma dość prosty interfejs webowy, ale bardzo dużo możliwości definiowania poszczególnych elementów w całym systemie przesyłania informacji.

Każdy kto ma dostęp do systemu ma określone uprawnienia oparte na rolach (role-based). Może to być np. administrator, administrator plików, administrator grupy, zwykły użytkownik, użytkownik tymczasowy.

Użytkowników możemy utworzyć od zera lub załadować z istniejącego systemu typu LDAP, SSO itp.

Użytkownicy mogą należeć do grup. Pliki mogą być współdzielone między poszczególnymi użytkownikami lub ich grupami.

Uprawnienia każdego użytkownika można dokładnie zdefiniować pod kątem zabezpieczeń, ograniczeń itd.
Na poniższym rysunku widać sekcję uprawnień związaną z uwierzytelnieniem. Może ono być realizowane przez MOVEit, system zewnętrzny lub oba. Można zdefiniować zasady związane z hasłem dostępu, uwierzytelnianiem przez HTTP, FTP, SSH itp.

W poniższej sekcji, można zdefiniować np. limity transferu i składowania danych, określić folder domowy i domyślny, i wiele innych.

Każdy użytkownik ma domyślnie włączone powiadomienia o przesłanych pakietach danych. Powiadomienia te wysyłane są drogą emailową. Ponieważ produkt nie posiada wbudowanego własnego serwera SMTP należy skonfigurować połączenie z istniejącym korporacyjnym serwerem pocztowym. Dla celów testowych wystarczy utworzyć na platformie Windows Server własną lokalną usługę.

Istotnym elementem wymiany danych są foldery. Z punktu widzenia organizacji, są one podobne do folderów w każdym systemie operacyjnym. W MFT w łatwy sposób można przyporządkowywać poszczególnych użytkowników lub ich grupy, mających do tych folderów dostęp oraz zdefiniować rodzaj dostępu.

Na poniższym rysunku widzimy listę uprawnień, które mogą być dziedziczone od folderu nadrzędnego lub nadane od zera. Oprócz tych najbardziej znanych mamy akcje związane z tworzeniem podkatalogów Sub czy najbardziej ciekawą Share, umożliwiającą udostępnianie tego folderu innym użytkownikom.

Jako administrator możemy określić, jakie uprawnienia dany użytkownik może przydzielić innym użytkownikom współdzieląc katalog. Nierzadko zostawia się tylko ustawienia List i Upload; użytkownik zewnętrzny może wtedy przesłać plik, wylistować zawartość katalogu, ale nie może nic pobrać ani skasować.

Jeśli zostawimy tylko te dwie akcje dla użytkownika testuser, a następnie zalogujemy się na jego konto, widzimy, że może on dodać innych użytkowników do współdzielenia katalogu, ale tylko dla tych wybranych akcji.

Ta użyteczność funkcjonalność nazywa się Secure Folder Sharing i powrócimy do niej w następnym artykule.

Jeśli ktoś nie chce czekać na następny odcinek może poczytać o MOVEit Transfer na stronach Ipswitch np. ipswitch.com, docs.ipswitch.com (cała dokumentacja) czy na stronach Progress Software.

Jeśli ktoś chciałby zobaczyć demo po polsku to proszę pisać na naszym PUG Poland.

OpenEdge 12.2

Pół roku, tyle mniej więcej czasu upłynęło od pojawienia się poprzedniej wersji OpenEdge. Zobaczmy co ciekawego pojawiło się w OE 12.2

Zacznijmy od silnika bazy danych i strojenia parametrów online. To dla nas nie jest zaskoczeniem, ponieważ w zapowiedziach wysoka dostępność była jedną z wiodących funkcji całej serii OE 12.

W OE 12.2 jest już 91 takich parametrów. Możemy je zmieniać w programie ABL lub w narzędziu PROMON. Dla administratorów to drugie rozwiązanie jest ciekawsze, ponadto dostępne już w OE 12.1. Wystarczy wejść do menu R&D -> opcja 4. Administrative Functions -> 16. Adjust Startup Parameters (nie pomylmy z opcją Startup Parameters w menu 1. Status Displays).

Tak więc, obecnie dodano: -semsets, -aiarcdir, -Ma, -Mm, -ssj, -dbnotifytime, -dbnotifyops.
Około 20 parametrów można zmienić opcją proutil… increaseto… Pamiętajmy, że każdy zmiana jedną z powyższych metod jest tylko do końca sesji serwera bazy! Aby mieć zmianę na stałe trzeba użyć pliku z parametrami.

Drugim ciekawym tematem jest PASOE. Wprowadzono mechanizm do migracji wybranych aplikacji między instancjami. Do tej pory można było przenieść całą instancję (wkrótce napiszę jak to zrobić), bądź wdrożyć aplikację webową w kilku ruchach. W OE 12.2 rozszerzono komendę tcman (pasman) o opcje export/import. Służą one do przenoszenia całych aplikacji ABL. Aplikacja ABL to session manager + jeden lub więcej agentów wielosesyjnych, wspólna konfiguracja zabezpieczeń, jedna lub więcej aplikacji webowych oraz usługi ABL, zmienne środowiskowe, skrypty itd.

Otóż całą taką aplikację można wyeksportować jednym poleceniem tcman export

Cały proces przebiega automatycznie. Powstaje plik archiwizacyjny o rozszerzeniu .oear, którego zawartość widzimy poniżej.


Plik ten instalujemy w docelowej instancji poleceniem tcman import.
To jeszcze nie koniec, bo jeśli chcemy dokonać migracji niestandardowej, dopasowanej do naszych potrzeb, możemy to zrobić wykorzystując wzorzec ../tlr/build.xml i Ant.

PASOE wyposażono w funkcję agent self-management.
Serwer aplikacji proaktywnie testuje połączenia z bazą danych i jeśli wystąpi awaria, agent zmniejsza wartość parametru: maksymalna liczba sesji ABL oraz informuje broker PASOE aby zmniejszyć ilość równoczesnych żądań do bazy danych.
Zainteresowanych innymi nowościami OE 12.2 odsyłam do stron progress.com.

OpenEdge 12.1. Co nowego…

Tak się składa, że klienci OpenEdge “odpuszczają” sobie wersje “zerowe”, czekając na kolejną w serii, zakładając (czy słusznie?), że posiada ona sporo bugów. Takie podejście jest charakterystyczne także dla wielu innych technologii (z wyłączeniem oczywiście gadżetów). No ale, mamy na rynku wersję OE 12.1, która niesie ze sobą kilka ciekawostek.

Na początek jednak ważna informacja dotycząca instalacji: począwszy od wersji OpenEdge 12.1 Java (JDK) nie jest już dystrybuowana wraz z instalatorem OE. Produkt ten musi być wstępnie zainstalowany przez klienta OpenEdge.

Problem ten został bardzo dobrze wyjaśniony w bazie wiedzy.
Pokazano tam jak sprawdzić wersję zainstalowanej Javy i skąd pobrać produkt dla danego systemu operacyjnego.

W funkcjonalności “wysoka dostępność” wprowadzono m.in. drobne udoskonalenia w replikacji danych – komenda dsrutil oraz nowe pola w tablicach VST.

Zwiększona została liczba parametrów, których wartość można zwiększyć online (-ecsize & -secsize).

Możliwa stała się edycja niestrukturalnych pól schematu dla bazy online (nie jest wymagana blokada exclusive dla schematu).

Wprowadzono dodatkowe możliwości obsługi ekstentów bazy online np. zmianę rozmiaru ekstentu zmiennego czy zamianę go na ekstent stały.

Przetwarzanie SSJ (Server-Side Join) zaimplementowano także dla zapytań dynamicznych.

Zmienione zostały domyślne wartości wielu parametrów startowych bazy danych, co ma poprawić ogólną wydajność.

W serwerze aplikacji (PAS) dodano komendę refreshagents, która kończy wszystkie sesje w agencie wielosesyjnym, dzięki czemu można aktualizować aplikację ABL w czasie rzeczywistym. Umożliwia to np. aktualizacje schematu online dla aplikacji.

Odroczone logowanie w PAS pomaga znaleźć przyczynę awarii agenta, dostarczając dodatkowe dane związane z awarią. Odroczone logowanie poprawia także wydajność, rejestrując tylko niewielką ilość informacji związanych z awarią agenta.

Wprowadzono obsługę uwierzytelniania klientów ABL, łączących się z PAS po protokołach: APSV, REST, SOAP, WEB.

To oczywiście nie wszystko. Dla ciekawych zachęcam do lektury pod tym adresem oraz tutaj.

OpenEdge 12

Stało się! Zgodnie z zapowiedziami nowa wersja OpenEdge 12 jest już na rynku. Jak zwykle gdy pojawia się nowy produkt z wyższym głównym numerem towarzyszy mu szczególnie duże zainteresowanie. Jakie najciekawsze nowości niesie ze sobą OE12? Było na ten temat w necie kilka webinarów, firma Galeos dostarczyła jeden po polsku, ale ja chciałem spojrzeć na nowego OpenEdge’a od strony praktyczno-technicznej.

Sztandarową nowością jest szybszy serwer baz danych, zawdzięczający tę poprawę dzięki kilku istotnym usprawnieniom.

Do wersji OE11 włącznie, serwer bazy danych OpenEdge obsługuje żądania od klientów zdalnych w sposób seryjny – jedno po drugim. Jeśli którekolwiek z żądań nie może być od razu obsłużone, na przykład, gdy istnieje blokada rekordu, żądanie to jest zawieszane i przesyłane na tył kolejki. Jeśli blokada rekordu zostanie zwolniona, klient i tak nadal czeka na swoją kolej. W OE12 serwer bazy może obsługiwać klientów zdalnych jako proces wielowątkowy. Służy do tego parametr -threadedServer 1, który jest włączony domyślnie. Równoległe przetwarzanie żądań poprawia wydajność poprzez usprawnienie mechanizmu oczekiwania na zwolnienie blokady (lock wait processing), odseparowanie od połączeń OLTP itp.

Drugą istotną zmianą w technologii jest możliwość obsługi złączeń z kilku tablic po stronie serwera (Server-Side Join). Do tej pory złączenia te były realizowane po stronie klienta, przez co przez sieć była transportowana znacznie większa ilość danych niż ta, która była istotna w zapytaniu. W OE12 takie zapytania są rozwiązywane po stronie serwera. Tylko rekordy, które spełniają warunki zapytania, są przesyłane do klienta, co znacząco poprawia wydajność. Obsługiwane są połączenia FOR EACH do 10 tablic. Funkcja jest włączana parametrem -ssj 1 i wymaga wielowątkowego serwera.

Trzecim elementem jest usprawnienie problemu występowania konfliktów dostępu do tablicy BHT (Buffer Hash Table).  Mechanizm BHT pozwala w wydajny sposób sprawdzić czy żądany blok z danymi znajduje się już w puli buforów, czy też trzeba go wczytać z dysku. Różne procesy walczą o aktualizację tablicy BHT, co wymaga dostępu do zapadek (latch) i tu występują konflikty. Wprowadzono (od 11.7.3) parametr -hashLatchFactor określający ilość zapadek jako procent parametru –hash. Mechanizm ten poprawia współbieżność dla losowego dostępu do puli buforów bazy danych.

Progress Software twierdzi, że powyższe nowości mogą przyspieszyć działanie serwera aż trzykrotnie i to bez jakichkolwiek zmian w samej aplikacji!

PASOE: W nowym serwerze aplikacji wprowadzono PASOE HealthCheck – proces który monitoruje serwer i system operacyjny i określa relatywny „stan zdrowia” agenta PASOE.

Te informacje mogą być użyte do podjęcia działań w celu uzdrowienia PASOE.

Na przykład w nowym interfejsie API mamy StopAgent API, którego zadaniem jest wycofanie bieżącej instancji serwera z eksploatacji (zatrzymanie akceptowania nowych żądań, zakończenie przetwarzania bieżących żądań i wyłączenie); jednocześnie startuje nowa instancja serwera.

Replication AI File Streaming: wprowadzono ulepszony mechanizm w OE Replication.

Serwer replikacji wysyła dane AI w taki sam sposób, jak w poprzedniej wersji (opisanej we wcześniejszym artykule nt OE11), ale wielowątkowy agent replikacji buforuje przychodzące bloki AI w buforze bloku replikacji (RSB). Bloki te są następnie odczytywane z bufora RSB i zapisane w bazach target. Ten mechanizm eliminuje kolejkowanie bloków AI po stronie bazy Source i utratę części danych w przypadku awarii.

Progress Development Studio

Wprowadzono sposób poprawienia jakości kodu ABL dodając Analizator Kodu ABL SonarLint, który stale analizuje i mierzy jakość kodu pokazując problematyczne miejsca. Zawiera także zalecenia jak rozwiązać napotkane problemy, jak lepiej napisać kod. Pomaga to osiągnąć lepsze praktyki kodowania i poprawić wydajność aplikacji.

Analizator można uruchomić dla określonego pliku, zestawu plików, ostatnio zmienionych plików lub nawet całego projektu.

Pierwszym krokiem jest ustawienie w preferencjach zasad i i innych parametrów.

Następnie w istniejącym projekcie wywołujemy Analizę pliku lub plików.

W tym prostym przykładzie, jeśli np. w kodzie jest definicja zmiennej, do której nie ma odniesienia w dalszej części kodu, jest to zgłaszane w Raporcie z analizy.

Zaktualizowany został zestaw kontrolek .NET. OpenEdge 12.0 używa Infragistics NetAdvantage dla .NET.

Tyle wybranych nowości jakie niesie ze sobą nowa wersja OpenEdge 12. Więcej szczegółów szukajcie na stronach Progress Software.

1 2 3