Podejście do przetwarzania w chmurze rozwiązuje niektóre z wyzwań związanych z działaniem systemów przetwarzania danych. Firmy oparte na danych przeprowadzają szybką transformację biznesową dzięki usługom w chmurze, a wiele z nich postrzega usługi w chmurze jako znaczne ulepszenie automatyzacji, niezawodności i skalowania na żądanie niż tradycyjne modele infrastruktury, które pojawiły się wcześniej. Charakter paradygmatu oprogramowania jako usługi (SaaS) na żądanie oznacza, że organizacje mogą kupować to, czego potrzebują, wtedy, gdy tego potrzebują. Oczywiście aspekty kosztowe i opłacalne są kluczowe, ale nie jedyne.
W projektowaniu architektur systemowych zawsze szukamy systemów, które pasują do odpowiedniej liczby użytkowników, na odpowiednim poziomie wydajności dla każdego. Chcemy uniknąć problemów z wydajnością i wąskich gardeł, a jeśli takie problemy się pojawią, chcemy systemu, który dostosuje się do zmieniającego się popytu.
Chcemy również, aby wszystko było szybsze. Zwinny proces rozwoju staje się coraz bardziej popularny; głównie dlatego, że przyspiesza dostarczanie początkowej wartości biznesowej i (poprzez proces ciągłego planowania i informacji zwrotnych) może zapewnić maksymalizację zwrotu z inwestycji.
Na koniec chcemy zmniejszenia złożoności. Kluczową cechą MongoDB jest wbudowana nadmiarowość. Jeśli masz co najmniej dwa węzły danych, można je skonfigurować jako zestaw replik lub fragmenty mongodb. Bez odpowiedniej automatyzacji może to być powtarzające się zadanie dla kilku zespołów (sieć, pamięć masowa, system operacyjny itp.). Automatyzacja w chmurze może pomóc w zmniejszeniu zależności między różnymi grupami w Twojej organizacji. Na przykład może nie być konieczne angażowanie zespołu sieciowego podczas tworzenia nowego systemu bazy danych.
Automatyzacja chmury nie tylko oszczędza czas i pieniądze, ale także zwiększa konkurencyjność Twojej organizacji na wymagającym rynku.
W tym blogu przyjrzymy się Atlasowi, rozwiązaniu MongoDB, które próbuje rozwiązać wszystkie te problemy.
Pierwsze kroki z MongoDB Atlas
Aby rozpocząć pracę z MongoDB Atlas, przejdź na stronę https://cloud.mongodb.com. W formularzu rejestracyjnym musisz podać minimalne informacje, takie jak adres e-mail, firma, kraj i numer telefonu komórkowego.
MongoDB Atlas doskonale radzi sobie z udostępnianiem i konfiguracją infrastruktury. Cały proces korzysta z dynamicznego interfejsu internetowego, który przeprowadzi Cię przez różne opcje wdrażania. Jest łatwy, intuicyjny i nie wymaga specjalistycznej wiedzy.
Po pierwszym zalogowaniu zostaniesz poproszony o zbudowanie pierwszego klastra w jedna z trzech najważniejszych chmur. Atlas współpracuje z Amazon AWS, Google Cloud i Microsoft Azure. Na podstawie swojego wyboru możesz wybrać lokalizację preferowanej lokalizacji centrum danych. Aby zwiększyć dostępność, możesz ustawić wiele regionów, izolację obciążenia lub ustawić różne opcje replikacji. Każdy projekt Atlas obsługuje do 25 klastrów, ale po kontakcie z obsługą powinieneś być w stanie hostować więcej.
Trzeba wybrać odpowiedni rozmiar serwera w połączeniu z IO i pojemność przechowywania. W tym artykule użyjemy darmowej wersji. Rozpoczęcie pracy z MongoDB Atlas jest darmowe, aby tworzyć prototypy, wczesne opracowywanie lub uczyć się. Karta kredytowa nie jest potrzebna, więc nie musisz martwić się o ukryte koszty. Darmowa edycja o nazwie M0 Sandbox jest ograniczona do:
- 512 MB pamięci
- Udostępniony procesor wirtualny
- Udostępniona pamięć RAM
- maksymalnie 100 połączeń
- Istnieje limit jednego klastra M0 na projekt.
W przypadku dedykowanych klastrów, MongoDB Atlas jest rozliczany godzinowo w zależności od tego, ile używasz. Stawka zależy od wielu czynników, przede wszystkim od rozmiaru i liczby używanych serwerów. Cena zaczyna się od 0,08/h (M10, 2GB RAM, 10GB pamięci, 1vCPU) do M700 z 768GB RAM, 4096GB pamięci, 96vCPU od 33,26 USD/h. Oczywiście należałoby uwzględnić inne czynniki kosztowe, takie jak na przykład koszt kopii zapasowych.
Według obliczeń MongoDB, 3-węzłowy zestaw replik M40 z AWS i uruchamianie go 24/7 przez jeden miesiąc przy użyciu dołączonego 80 GB standardowej pamięci blokowej kosztowałby około 947 USD.
Podstawowa konfiguracja działa z replikacją. Jeśli potrzebujesz shardingu, typ instancji M30 to minimum (8 GB pamięci RAM, 40 GB pamięci masowej, 2 procesory vCPU, cena od 0,54 USD/godz.).
Początkowa konfiguracja dostępu do sieci Atlas MongoDB
Jednym z pierwszych kroków, jakie musimy wykonać po utworzeniu klastra, jest włączenie białej listy adresów IP. Aby umożliwić dostęp z dowolnego miejsca, możesz ustawić wpis na białej liście na 0.0.0.0/0, ale nie jest to zalecane. Jeśli nie znasz swojego adresu IP, Atlas pomoże Ci go zidentyfikować.
Aby Twoje połączenie było bezpieczniejsze, możesz również skonfigurować połączenie równorzędne . Ta funkcja nie jest dostępna dla klastrów M0, M2 i M5. Komunikacja równorzędna sieci umożliwia łączność między MongoDB VPC a dostawcą chmury. Sieć Peer VPC pozwala różnym VOC ti komunikować się w przestrzeni prywatnej, ruch nie przechodzi przez publiczny Internet.
Aby rozpocząć pracę z nowym klastrem, utwórz użytkownika początkowego. Zrób to w zakładce Dostęp do bazy danych. MongoDB korzysta z mechanizmu uwierzytelniania typu Salted Challenge Response. Jest to mechanizm bezpieczeństwa oparty na SHA-256, poświadczeniach użytkownika w stosunku do nazwy użytkownika, hasła i bazy danych uwierzytelniania.
Migracja istniejącego klastra MongoDB do Atlasu MongoDB
Istnieje również możliwość migracji istniejącego klastra lokalnego do Mongo Atlas. Odbywa się to za pośrednictwem dedykowanej usługi o nazwie Live Migration Service. Proces Atlas Live Migration przesyła dane przez serwer aplikacji kontrolowany przez MongoDB.
Migracja na żywo polega na utrzymywaniu synchronizacji klastra w MongoDB Atlas ze źródłową bazą danych. Podczas tego procesu aplikacja może kontynuować odczytywanie i zapisywanie ze źródłowej bazy danych. Ponieważ proces obserwuje nadchodzące zmiany, wszystko zostanie zreplikowane, a migrację można przeprowadzić online. Ty decydujesz, kiedy zmienić ustawienia połączenia aplikacji i dokonać przełączenia. Aby wykonać ten proces mniej podatny, Atlas udostępnia opcję Walidacji, która sprawdza dostęp do białej listy IP, konfigurację SSL, CA itp.
Najważniejsze jest to, że usługa jest bezpłatna.
Jeśli nie potrzebujesz migracji online, możesz również użyć mongoimport. Używaj powłoki mongo z minimalną wersją 3.2.7, zawsze używaj SSL. Możesz pobrać dane testowe stąd.
mongoimport --host TestCluster-shard-0/testcluster-shard-*****.azure.mongodb.net:27017,testcluster-shard-****.azure.mongodb.net:27017,testcluster-shard-******.azure.mongodb.net:27017 --ssl --username admin --authenticationDatabase admin --type JSON --file city_inspections.json
2019-08-15T21:53:09.921+0200 WARNING: ignoring unsupported URI parameter 'replicaset'
2019-08-15T21:53:09.922+0200 no collection specified
2019-08-15T21:53:09.922+0200 using filename 'city_inspections' as collection
Enter password:
2019-08-15T21:53:14.288+0200 connected to: mongodb://testcluster-shard-*****.azure.mongodb.net:27017,testcluster-shard-*****.azure.mongodb.net:27017,testcluster-shard-*****.azure.mongodb.net:27017/?replicaSet=TestCluster-shard-0
2019-08-15T21:53:17.289+0200 [........................] test.city_inspections 589KB/23.2MB (2.5%)
2019-08-15T21:53:20.290+0200 [#.......................] test.city_inspections 1.43MB/23.2MB (6.2%)
2019-08-15T21:53:23.292+0200 [##......................] test.city_inspections 2.01MB/23.2MB (8.6%)
...
2019-08-15T21:55:09.140+0200 [########################] test.city_inspections 23.2MB/23.2MB (100.0%)
2019-08-15T21:55:09.140+0200 81047 document(s) imported successfully. 0 document(s) failed to import.
Aby sprawdzić dane, zaloguj się za pomocą powłoki mongo.
mongo "mongodb+srv://testcluster-*****.azure.mongodb.net/test" --username admin
MongoDB shell version v4.2.0
Enter password:
connecting to: mongodb://testcluster-shard-00-00-*****.azure.mongodb.net:27017,testcluster-shard-00-02-*****.azure.mongodb.net:27017,testcluster-shard-00-01-*****.azure.mongodb.net:27017/test?authSource=admin&compressors=disabled&gssapiServiceName=mongodb&replicaSet=TestCluster-shard-0&ssl=true
2019-08-15T22:15:58.068+0200 I NETWORK [js] Starting new replica set monitor for TestCluster-shard-0/testcluster-shard-00-00-*****.azure.mongodb.net:27017,testcluster-shard-00-02-*****.azure.mongodb.net:27017,testcluster-shard-00-01-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.069+0200 I CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to testcluster-shard-00-01-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.070+0200 I CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to testcluster-shard-00-00-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.070+0200 I CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to testcluster-shard-00-02-*****.azure.mongodb.net:27017
2019-08-15T22:15:58.801+0200 I NETWORK [ReplicaSetMonitor-TaskExecutor] Confirmed replica set for TestCluster-shard-0 is TestCluster-shard-0/testcluster-shard-00-00-*****.azure.mongodb.net:27017,testcluster-shard-00-01-*****.azure.mongodb.net:27017,testcluster-shard-00-02-*****.azure.mongodb.net:27017
Implicit session: session { "id" : UUID("6a5d1ee6-064b-4ba8-881a-71aa4aef4983") }
MongoDB server version: 4.0.12
WARNING: shell and server versions do not match
MongoDB Enterprise TestCluster-shard-0:PRIMARY> show collections;
city_inspections
MongoDB Enterprise TestCluster-shard-0:PRIMARY> db.city_inspections.find();
{ "_id" : ObjectId("56d61033a378eccde8a83557"), "id" : "10284-2015-ENFO", "certificate_number" : 9287088, "business_name" : "VYACHESLAV KANDZHANOV", "date" : "Feb 25 2015", "result" : "No Violation Issued", "sector" : "Misc Non-Food Retail - 817", "address" : { "city" : "NEW YORK", "zip" : 10030, "street" : "FREDRCK D BLVD", "number" : 2655 } }
{ "_id" : ObjectId("56d61033a378eccde8a83559"), "id" : "10302-2015-ENFO", "certificate_number" : 9287089, "business_name" : "NYC CANDY STORE SHOP CORP", "date" : "Feb 25 2015", "result" : "No Violation Issued", "sector" : "Cigarette Retail Dealer - 127", "address" : { "city" : "NEW YORK", "zip" : 10030, "street" : "FREDRCK D BLVD", "number" : 2653 } }
...
{ "_id" : ObjectId("56d61033a378eccde8a8355e"), "id" : "10391-2015-ENFO", "certificate_number" : 3019415, "business_name" : "WILFREDO DELIVERY SERVICE INC", "date" : "Feb 26 2015", "result" : "Fail", "sector" : "Fuel Oil Dealer - 814", "address" : { "city" : "WADING RIVER", "zip" : 11792, "street" : "WADING RIVER MANOR RD", "number" : 1607 } }
Type "it" for more
MongoDB Enterprise TestCluster-shard-0:PRIMARY>
Wnioski
To wszystko w części pierwszej. W następnym artykule zajmiemy się monitorowaniem, tworzeniem kopii zapasowych, codzienną administracją oraz nową usługą MongoDB do budowania Data Lakes. Bądź na bieżąco!