Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

คุณพร้อมสำหรับ Black Friday & Cyber Monday แล้วหรือยัง? ปกป้องข้อมูลของคุณวันนี้

คุณพร้อมสำหรับ Black Friday & Cyber Monday แล้วหรือยัง? ปกป้องข้อมูลของคุณวันนี้

Black Friday, Cyber Monday และแม้แต่ Green Monday (วันจันทร์สุดท้ายที่ประหยัด "สีเขียว" และมีวันที่ส่งของเหมาะสมสำหรับคริสต์มาส) แน่นอนว่าเป็นหัวข้อที่น่าสนใจในช่วงนี้ของปี หัวข้อสนทนาที่พบบ่อยที่สุดคือการล่าดีลที่ดี ช็อปปิ้งของขวัญวันหยุดที่ปรารถนา และจำนวนเงินที่ผู้บริโภคใช้จ่ายอย่างน่าทึ่ง

รายงานยอดขาย Black Friday 2018 แสดงว่ายอดขายออนไลน์อยู่ที่ $6.2 พันล้านดอลลาร์ เพิ่มขึ้น 23.6 เปอร์เซ็นต์จากปีก่อนหน้า , และ Cyber Monday เป็นวันขายใหญ่ที่สุดของปี 2018 มียอดรายได้ออนไลน์ $7.9 พันล้านดอลลาร์ เพิ่มขึ้น 19.3 เปอร์เซ็นต์จาก 2017

แต่บทสนทนาอีกอย่างที่สำคัญไม่แพ้กัน กำลังเกิดขึ้นพร้อมกัน และเกี่ยวกับความพยายามด้านเทคโนโลยีและการจัดการข้อมูลอย่างมหาศาล ที่จำเป็นต้องรักษาให้การช็อปปิ้งออนไลน์ไหลลื่น หมายเลขบัตรเครดิตปลอดภัย และทั้งกระบวนการขายออนไลน์และออฟไซต์ไร้ข้อบกพร่อง แม้ผู้ช็อปส่วนใหญ่อาจไม่เคยหยุดคิดถึงปริมาณหรือความซับซ้อนของเทคโนโลยีที่ทำให้การช็อปปิ้งของพวกเขาเป็นไปได้ หรือราคาถูกตั้งอย่างไรและการซื้อขายถูกประมวลผลอย่างไร แต่สำหรับเราที่รายได้ขึ้นอยู่กับเทคโนโลยีข้อมูลเบื้องหลังประสบการณ์ช็อปปิ้ง นี่คือช่วงเวลาวางแผนและการนำไปปฏิบัติที่สำคัญที่สุดของทั้งปี

ดังนั้น หากคุณเป็นพ่อค้า หรือสนับสนุนพ่อค้า หรือเกี่ยวข้องกับ e-commerce หรือการเงิน โดย bất kỳวิธีใด คุณอาจกำลังวุ่นวายมากตอนนี้ และเก็บโทรศัพท์มือถือไว้ใกล้ตัวตลอดเวลา ตอนนี้คือเวลาเตรียมฐานข้อมูล โครงสร้างพื้นฐานรองรับ และแอปพลิเคชันของคุณสำหรับโหลดหนักที่พวกเขาอาจต้องทนทุกในช่วงฤดูกาลช็อปปิ้ง

บล็อกนี้ครอบคลุมพื้นที่หลักของ technology stack ข้อมูลของคุณที่คุณต้องการพิจารณาเมื่อ Black Friday เข้าใกล้ เคล็ดลับเกี่ยวกับวิธีเตรียมตัว และว่า ObjectRocket team ของคุณสามารถทำงานร่วมกับคุณเพื่อพร้อมสำหรับ Black Friday และ Cyber Monday ได้อย่างไร

คุณพร้อมสำหรับ Black Friday & Cyber Monday แล้วหรือยัง? ปกป้องข้อมูลของคุณวันนี้

ขั้นตอนทั่วไปในการเตรียม Data Stack ของคุณ

มีขั้นตอนหลายขั้นตอนที่ควรปฏิบัติเพื่อเตรียมตัว ไม่ว่าคุณจะใช้ฐานข้อมูลใดก็ตาม รวมถึง best practices มาตรฐานสำหรับรักษา data stores ให้ทำงานลื่นไหล แต่มันมีความเร่งด่วนพิเศษเมื่อเตรียมตัวสำหรับ Black Friday และ Cyber Monday

  • เตรียมพร้อมสำหรับปริมาณトラフィックมหาศาล: Capacity planning, growth projection, data stability, high availability, replication, failover clusters เป็นแนวคิดหลักสำหรับทนทานต่อโหลดトラフィックที่เพิ่มขึ้น พิจารณาสิ่งเหล่านี้เมื่อเตรียมตัว:
    • สำหรับ sharded clusters พิจารณาเพิ่ม shards เพิ่มเติมเพื่อให้แน่ใจว่าคุณไม่หมดพื้นที่ในช่วง peak periods ที่นี่ ObjectRocket เรามักต้องการให้ลูกค้าที่คาดการณ์การเติบโตมากอยู่ที่ประมาณ 60% usage เพื่อป้องกัน outages จาก disk เต็ม
    • กับ Elasticsearch clusters รุ่น 6.x ขึ้นไป คุณต้องมั่นใจว่า หากใช้ smaller plan sizes ความเป็นไปได้ของ rapid growth ถูกพิจารณา และเป้าหมายสำคัญคือเก็บ disk size ให้อยู่ใต้ 95% เพื่อหลีกเลี่ยง read-only lock จำไว้ตอน capacity planning ว่าแต่ละ shard มี translog ที่สามารถโตถึง 512MB และอยู่ได้นานถึง 12 ชั่วโมง
    • สำหรับ replica set ขนาดเล็ก เรียบง่าย ที่ไม่ใช้ auto-scaling พิจารณาย้ายไป plan size ที่จัดการ concurrency และ growth ตาม growth projection ได้
    • เมื่อ traffic เพิ่มขึ้น connection requests ไปยังฐานข้อมูลก็เพิ่มขึ้น ทบทวนกับทีมแอปพลิเคชัน/ลูกค้า เพื่อให้แน่ใจว่ามี connection pooling settings ที่ถูกต้อง รวมถึง OS settings ที่ถูกต้อง (เช่น ulimits ซึ่งอนุญาตให้แสดงและตั้งค่าขีดจำกัดทรัพยากรสำหรับผู้ใช้) บางครั้งแอปพลิเคชันอาจต้องการเปิด connections มากกว่าที่ single replica set หรือ 4 default mongos (โหนดพิเศษที่ฟัง connections บน sharded cluster) ที่เราเสนอสามารถจัดการได้ ในกรณีนี้ เรามักทำงานกับลูกค้าเพื่อจัดสรร mongos เพิ่มเติมเพื่อจัดการ connections
    • การให้แน่ใจว่า oplog มีขนาดเหมาะสมเป็นอีกพื้นที่ที่ควรดู oplog เป็น capped collection (ขนาดคงที่) ของทุก create, read, และ delete operations ซึ่ง secondary nodes replicate data จาก sync source ของพวกเขา Secondary nodes อาจ out of sync หาก oplog size บนโหนดที่พวกเขากำลัง sync จาก น้อยและพวกเขาไม่สามารถติดตาม operations ได้ – โดยเฉพาะในช่วง peak periods ยิ่ง oplog ใหญ่ ยิ่ง secondary nodes มีเวลามากขึ้นที่จะ in sync กับกิจกรรมบน Primary node แม้พวกเขาจะ down
  • Test, Tweak, และ Test อีก: ยิ่งคุณ test ฐานข้อมูลของคุณมากเท่าไร คุณจะรู้จักมันมากเท่านั้น นี่คือเวลาที่จะรัน stress และ performance tests แล้วนำการเปลี่ยนแปลงไปใช้ ให้เสร็จก่อนที่ลูกค้าจะเริ่มช็อปปิ้ง
    • ดู hiccups/data failures ในอดีต, พื้นที่ที่อ่อนแอ และตัดสินใจว่ามีสิ่งที่ต้องเสริมสร้างหรือไม่ (แต่อง่ายใช้ big fixes ทันทีก่อน BF)
    • ทำ load และ performance test ตอนต้นของช่วงเตรียมการ และตลอดปี และสร้างประเภทการทดสอบเหล่านี้เข้าไปใน Continuous Integration process
    • จำลอง traffic patterns และความยาวของโหลดใน test environment หากเป็นไปได้
  • ใช้ประโยชน์จาก analytics: หากคุณดู traffic flows และ patterns อื่นๆ มาหลายเดือน คุณควรคุ้นเคยกับสิ่งที่ "ปกติ"
    • เริ่มค้นหา performance หรือ input/output issues ใดๆ ที่ดู sub-optimal ที่คุณสามารถแก้ไขก่อนวันสำคัญ
    • ศึกษา traffic patterns: ดูจำนวน max connections ในเวลาที่วุ่นวายที่สุด และวางแผนสำหรับ capacity เพิ่ม 20%
    • สำหรับ Elasticsearch คุณสามารถใช้ third-party metrics collectors เช่น New Relic ที่จะให้ CPU use/GC time/Query time สถิติทั้งหมดนี้จะช่วยคุณวางแผนสำหรับสัปดาห์ใหญ่ของ Black Friday
  • แน่ใจว่า เลี่ยง major repairs หรือ upgrades ใกล้ช่วงวันสำคัญ! และ สื่อสาร moratorium นี้ทั่วทีมของคุณ
  • ทบทวน security measures ของคุณอีกครั้ง รู้จักและเข้าใจพวกเขา เตรียมพร้อมและมั่นใจเกี่ยวกับความสามารถในการอธิบายให้คนอื่น (หากจำเป็น) อย่างน้อย ตรวจสอบให้แน่ใจว่าคุณไม่ใช่ "soft target" สำหรับ data breach
  • Privacy regulations คล้ายกับ Security issues กำลังสำคัญขึ้นเรื่อยๆ พิจารณาว่า GDPR requirements ส่งผลต่อการใช้ sales campaigns (และ cookies ที่เกี่ยวข้อง) และวิธีที่คุณใช้/จัดเก็บข้อมูลลูกค้าอย่างไร
  • Continuous improvement with an eye for the future: เป็นความคิดดีที่จะจัด retrospective meetings (retros) หลัง Black Friday/Cyber Monday ทุกครั้ง เพื่อระบุพื้นที่ที่ปรับปรุงได้ในครั้งหน้า!

ข้อพิจารณาเฉพาะฐานข้อมูล

นี่คือ Pro Tips สำหรับฐานข้อมูลบางส่วนที่ ObjectRocket รองรับ (หรืออาจคุณรันทั้งสามฐานข้อมูล (polyglot persistence)!)

MongoDB Pro Tips

MongoDB เป็นตัวเลือกที่ได้รับความนิยมเพิ่มขึ้นใน NoSQL databases สำหรับ e-commerce ด้วย speed และ scalability เป็นประโยชน์หลัก หลายพ่อค้าใช้ MongoDB Product Catalog เพื่อจัดการ product offerings, pricing, shipping, และ inventory Pro tips จากผู้เชี่ยวชาญ MongoDB ของเรารวมถึง:

  • ให้แน่ใจว่าทั้งสาม hostnames ของ replica set ถูกเพิ่มใน connection string สำหรับ replica sets และทั้ง 4 mongos สำหรับ sharded cluster
  • ให้แน่ใจว่าพวกเขาใช้ connection pool เพื่อหลีกเลี่ยงการเปิด connections มากเกินไปที่ไม่จำเป็นไปยังฐานข้อมูล
  • พิจารณาว่าตราฟิกและ read/writes ของคุณอาจเพิ่มขึ้นมากแค่ไหน (growth projection) และใช้ประโยชน์จากฟีเจอร์ auto-scaling ของ MongoDB
  • ควบคุม performance tuning (memory usage, connections handling, health of replica sets) ทั้งก่อนและระหว่างวันช็อปปิ้งใหญ่ๆ

Elasticsearch Pro Tips

เรารวบรวม Pro tips สำหรับเตรียมฐานข้อมูลสำหรับ Black Friday และ Cyber Monday จากทีมผู้เชี่ยวชาญ Elasticsearch ของเรา Elasticsearch บ่อยครั้งเป็นส่วนสำคัญของ technology stack e-commerce ไม่ว่าจะใช้ 주로สำหรับ visualization และ analysis ของ streaming log data หรือสำหรับ online-shopping functionality สำคัญของ search (พร้อม auto-completion, faceted search, และ synonyms)

  • 2 วันก่อน Black Friday เพิ่มความถี่ในการทำ snapshots เราแนะนำให้ทำ snapshots 2-3 ครั้งต่อวันตลอดช่วงสุดสัปดาห์ช็อปปิ้ง และหลัง Cyber Monday กลับไปที่ backup schedule ปกติ เราแนะนำให้จัดตาราง snapshots ให้เกิดขึ้นก่อน peak traffic และอีกครั้งหลัง peak traffic – และอีกครั้งที่เวลาที่คุณเลือก เนื่องจาก Elasticsearch backups ทำเป็น diffs การทำ snapshots 3 ครั้งต่อวันทำให้ duration ของ snapshot สั้นมาก
  • หากคุณใช้ Elasticsearch 主要สำหรับ visualizing log files:
    • วางแผนสำหรับการบริโภคข้อมูลที่เพิ่มขึ้นในช่วงงาน
    • ให้แน่ใจว่า Kibana dashboards ทันสมัยด้วย settings ที่เหมาะสมเพื่อวิเคราะห์ logs และ events สำคัญที่สุด
    • รู้ baselines ของคุณใน aggregations/dashboards เพื่อที่จะระบุ spikes และ issues บาง use cases อาจได้ประโยชน์จาก Elastalert integration เพื่อ alert บน events ต่างๆ
  • หากคุณใช้ Elasticsearch 主要สำหรับ Search functionality:
    • เนื่องจากวันเหล่านี้อาจจะ read-heavy มาก คุณต้องการ:
      • เพิ่ม node count เพื่อได้ additional active thread pool
      • เพิ่ม replica count เพื่อให้มีที่อ่านมากขึ้น
  • ใช้ Elasticsearch's tool Rally เพื่อทำ benchmarking tests เพื่อดูว่า Elasticsearch cluster ปัจจุบันจัดการ current planned search throughput ได้หรือไม่
  • ตรวจสอบ Elasticsearch logs สำหรับ errors เพิ่มเติมที่อาจถูก throw
  • ให้แน่ใจว่า applications ทั้งหมดใช้ทั้ง 4 connection endpoints
  • ดู current slow queries และหากต้องการช่วยวิเคราะห์หรือปรับปรุง queries ติดต่อ ObjectRocket team ของคุณ

Redis Pro Tips

Redis มักใช้สำหรับข้อมูลที่สามารถเป็น highly ephemeral ซึ่งหมายถึง caching: query, session, และ full page caches ในช่วง traffic หนักของ Black Friday และ Cyber Monday caching เป็นกุญแจสำคัญในการรักษาให้แอปพลิเคชันทำงานได้ดีที่สุด ผู้เชี่ยวชาญ Redis ของเราแนะนำเคล็ดลับต่อไปนี้:

  • หากคุณใช้ Redis เป็น session store หรือ cache พิจารณา resize ขึ้น หากคิดว่าอาจจะ hit memory หรือ bandwidth limit ด้วย traffic Black Friday ที่เพิ่มขึ้น
  • ยืนยันว่าคุณตั้ง TTL ("time to live" กำหนดเวลาหมดอายุของ key) บน keys ใดๆ ที่ควรและควรหมดอายุอัตโนมัติ
  • ยืนยันว่า maxmemory-policy ตั้งค่าเหมาะสมในกรณีที่คุณหมดหน่วยความจำ ติดต่อ ObjectRocket support หากต้องการแก้ไข setting นี้บน instance ของคุณ
  • สำหรับ production instances ให้แน่ใจว่าคุณมี memory fragmentation ratio ที่ดีก่อน spikes ใน traffic ใดๆ
  • หากคุณใช้ Redis เป็น backend สำหรับ job queue management framework ใดๆ เราแนะนำอย่างยิ่งให้มีและตรวจสอบ dashboard สำหรับ framework นี้เพื่อ monitor job status ตัวอย่าง dashboards ได้แก่ resque-web, arena, sideqik
  • แม้จะดูน่าสนใจ อย่ารัน flushdb, flushall หรือ large deletion operations อื่นๆ ทันทีก่อน campaign แทนเขียน SCAN และ DEL script
  • ตรวจสอบ COMMANDSTATS log และ SLOWLOG log สำหรับ current entries และดู patterns ที่สามารถ optimize ได้ เพื่อไม่ให้ running into blocking operations หลีกเลี่ยงการใช้ "KEYS * " และ long-running operations อื่นๆ
  • บน development instance (ไม่ใช่ production!) รัน stress test ขณะดู output จาก MONITOR command เพื่อวิเคราะห์ patterns
  • บน development instance พร้อม sample data ใช้ rdb-tools, redis-cli --bigkeys, และ redis-cli --memkeys เพื่อวิเคราะห์ data distribution และ memory usage
  • ตั้งค่า agent ที่รวม monitoring ของ instances ของคุณเข้าไปใน stats platform ที่มีอยู่แล้ว เช่น Datadog, New Relic, Prometheus

สิ่งที่ ObjectRocket ทำเพื่อเป็นพันธมิตรกับคุณ

สำหรับลูกค้ามากมาย ช่วงเทศกาลเป็นสัดส่วนใหญ่ของปริมาณธุรกิจประจำปี ช่วงนี้คือช่วงที่เดิมพันสูงสุดและ uptime สำคัญที่สุด เราทำงานมากเพื่อช่วยลูกค้าเตรียมตัวสำหรับ seasonal traffic events นี้

นี่คือเพียงตัวอย่างบางส่วนของสิ่งที่ ObjectRocket team ของคุณทำ:

  • Slow query analysis: เราสามารถให้คำแนะนำสำหรับ queries ที่ใช้เวลานานกว่าที่เหมาะสม (ตัวอย่างเช่น ใน Elasticsearch query ใดๆ ที่ใช้เวลานานกว่า 1 วินาทีถือว่า suboptimal)
    • Logging สำหรับ slow queries ต้องเปิดใช้งานบน cluster – (ลูกค้าของเราสามารถขอได้) และจากนั้น – เมื่อเรามีข้อมูลหนึ่งหรือสองวัน – เราดูจำนวน queries ที่ใช้เวลานานกว่า optimal seconds ที่กำหนด และรันพวกเขาผ่าน query profiler ซึ่งระบุส่วนที่มีค่าใช้จ่ายสูงสุดของ query เราจึงปรึกษากับลูกค้าและให้คำแนะนำเกี่ยวกับวิธีลด query time
  • Performance Tuning: นี่เป็นอีกพื้นที่ที่เรามักใช้เวลาบนการปรับแต่ง operations ที่ไม่ได้ optimize สำหรับลูกค้า โดยเฉพาะ:
    • Bad regex queries ทำให้ database ช้าลงเป็นไมล์ อ้างอิงบล็อกโพสต์ของเราเกี่ยวกับ optimizations บางส่วนที่สามารถทำได้กับ regex queries
    • Queries ที่ต้องการ collection scans Operations เหล่านี้อาจมีค่าใช้จ่ายสูงเพราะมักสแกนหลาย documents และ return เพียงไม่กี่อัน (เช่น ไม่ได้ใช้ indexes)
    • Operations ที่ใช้ non-performant operators มักตรวจสอบหลาย documents และ index keys ดังนั้นที่เป็นไปได้ ให้หลีกเลี่ยงการใช้ operators เช่น $ne, $exists: true, $nin.
  • Indexing: การมี indexes ที่เหมาะสมไว้มักเป็นงานสำคัญที่สุด และเป็นวิธีที่ลูกค้าส่วนใหญ่รอดมาจาก Black Friday เราสามารถ profile instance เพื่อให้แน่ใจว่า indexes ที่เหมาะสมอยู่ในที่สำหรับ operations ส่วนใหญ่ และหากต้องการ indexes เพิ่มเติม เราทำงานร่วมกับคุณเพื่อสร้างพวกเขา
  • Load Testing & Scaling — ตามคำขอ เราสามารถจัดการ load testing เพื่อจำลองการเพิ่มขึ้นของ traffic ที่คาดหวังก่อนที่จะเกิดขึ้น จำเป็นอย่างยิ่งเพื่อให้แน่ใจว่า performance ของแอปพลิเคชันของคุณยังคง optimal ระหว่าง anticipated growth และ traffic surges
  • Maintenance Moratorium — เราตระหนักว่าลูกค้าขึ้นอยู่กับเรามากในช่วงนี้ และได้ implement Maintenance Moratorium หมายถึง soft freeze บน infrastructure maintenance work 有效ระหว่างต้น พฤศจิกายน ถึงต้น มกราคม ในช่วงนี้ จะอนุญาตเฉพาะ emergency maintenances ที่ผ่านกระบวนการอนุมัติที่เข้มงวด
  • 24x7x365 Support — ทีม ObjectRocket Support อยู่บน duty ตลอด 24 ชั่วโมง เพื่อตอบสนองความต้องการของคุณ ทีม DBA และผู้เชี่ยวชาญเทคโนโลยีข้อมูลของเราเป็น veterans มากของ Black Friday และ Cyber Monday madness พวกเขาอยู่ที่นี่สำหรับคุณ ก่อน ระหว่าง และหลังช่วงวิกฤตนี้!

เหมือนเดิม วิธีที่ดีที่สุดในการติดต่อ ObjectRocket Support คืออีเมลเราที่ support@objectrocket.com ให้เราทราบว่าเราสามารถช่วยได้อย่างไร และ Happy Black Friday!