หน้า: [1] 2 3 4
 
ผู้เขียน กระจู๋: ทำอย่างไรให้ระบบทำงานราบรื่น  (อ่าน 49553 ครั้ง)
0 สาวก และ 1 ขาจร กำลังดูกระจู๋นี้
เดิมว่าจะตั้งชื่อ "ทำอย่างไร server ไม่ล่ม" แต่จริงๆอย่างไรก็มีโอกาส(ล่ม)
อยากตั้งชื่อให้ตรงกับภาษาอังกฤษว่า "High Available System" หรือ "High Availability",ผมยังนึกชื่อเทห์ๆยังไม่ได้
บทความคงเน้นเรื่องแนวคิด(concept)ยังไม่ลงลึกถึงเรื่องทางเทคนิค(ถ้าหนังสือขายได้ อาจมีเล่ม 2-3)
ระบบจะเน้นที่ windows+IIS+ASP.NET+MSSQL และ LAMP(Linux+Apache+MySQL+Perl/PHP)
หัวข้อที่คิดได้ตอนนี้(เพิ่มเติมได้นะครับ)
1.บทนำ
-จุดประสงค์หลักของการออกแบบระบบให้ทำงานได้อย่างราบรื่นก็คือต้องการให้ระบบทำงานไปถึงจุดหมายสูงสุดคือระดับ 99.999% ซึ่งมักถูกเรียกว่า "five nines" ซึ่งหมายถึงระบบ down ได้ 5.26 min ใน 1 ปี
2.Web Server and Scripts
  - IIS,Apache,lighttpd,LiteSpeed,nginx,Yaws
3.Web Site Optimize
 - Rule of Fast Web and Optimize (JavaScript ,YSlow,Minimize CSS, JS and PNG,Gzip)
4. แนวคิดการเขียนโปรแกรมแบบ High Available
  - Message Queuing(MQSeries,MSMQ,ActiveMQ,RabbitMQ,beanstalkd,gearman,starling)
  - Session Management
  - Hibernate
  - SOA
  - RESTful (Apache CouchDB,Amazon’s Simple Storage Service,Yahoo,eBay,Flickr,Del.icio.us,Facebook,Google GData/Picasa)
  - Template(smarty..etc)
5.แนวคิดการทำ Caching
  - Page Caching
  - MemCached
  - Query Cache
  - Script Cache (PHP Cache/APC/eAccelerator,Python/django/MintCache)
  - Content Cache(Varnish, Squid)
6.แนวคิด High Available Database
  - Partition/Shard,View
  - Store Procedure,Profiler
  - Replication
  - Distribute Database (Distribute Query)
  - Tunning
  - hypertable,BigTable,Hadoop
7. แนวคิดเรื่องการแบ่งภาระกันทำงาน
  - Scale Up,Scale Out
  - Load Balancing ,NLB,CLB,HAproxy,pound
  - Clustering,Fail Over,Heartbeat
  - Virtual Server
  - P2P,Grid/Cloud Computing
8.แนวคิด High Available Storage
   - SATA,SCSI,iSCSI,SAS
   - RAID 0,1,5,6
   - NAS,SAN
   - distributed filesystem(NFS,mogilefs..)
9.Performance Testing/Capacity Plan
   - Load Runner,ACT,WebLoad,Httperf
   - PHPunit,DBunit,strace, dtrace, ltrace
   - Capacity Plan (RRDtoo,Munin)
   - (Not “how fast” but “how many”, Test “force”, not speed,Test scalability, not just “performance”)
   - System Monitor (Hyperic,Ganglia)
10. Hardware/Network และ OS
   -แนวคิดเรื่อง Datacenter and High Available Network
   - Hotswap,chipkill ..etc
   - CentOS
   - Content Delivery Network(Akamai, LimeLight, PantherExpress, CacheFly..)
   - Netwok Appliance
11.แนวคิด Backup & Recovery,Disaster Recovery,Security
12. กรณีศึกษา(มาดูว่าระบบจริงๆเขาทำอย่างไร)
  - LiveJournal ผู้ให้กำเนิด memcached
    มีสมาชิกมากกว่า 10 ล้าน ต้องรองรับการเข้าใช้อย่างน้อยเป็นพัน hits/วินาที
    LiveJournal มักเป็นกรณีศึกษาสำหรับการทำ High Availability
  - google
     bigtable,MapReduce  ..
  - hotmail(การย้าย hotmail จาก BSD ไป Exchange)
  - youtube
  - ebay
  - flickr
  - Amazon
  - Twitter
  - Wikimedia
  - Slashdot
  - FeedBurner
  - MySpace
  - Friendster

ผมลองๆเขียนหัวข้อดูครับ ถ้ามีอะไรตกหล่น ก็เสนอแนะได้นะครับ (ตอนนี้นึกได้แค่นี้ อาจมีตกหล่น)
จะลองพยายามเขียนเป็นตอนๆก่อนนะครับ

ืnote: เดิมตั้งใจจะไปที่หิ้งคอม แต่ตั้งกระทู้ใหม่ไม่ได้
« แก้ไขครั้งสุดท้าย: 03 ส.ค. 2008, 23:05 น. โดย ลุงซัน » บันทึกการเข้า

http://www.ThaiBuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย
มารออ่านครับ

ขอบคุณล่วงหน้าครับ
บันทึกการเข้า

ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog
โอ้โห อาจารย์เปิดสอนอีกแล้ว ไหว้
บันทึกการเข้า

อาชีพปัจจุบันคือเปิดร้านสกรีนเสื้อครับ ช่วยอุดหนุนด้วยเด้อ
ขอบคุณครับ ยิ้มน่ารัก
บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
ตามมาเรียนค่ะ  เจ๋ง
ตอนนี้ศึกษาแต่เรื่อง data warehouse อย่างเดียวเลย  ปลื้ม
บันทึกการเข้า

อย่างจดจ่อเลยครับ  กรี๊ดดดดด
บันทึกการเข้า

กาก
ขอเวลาปรับจิตปรับใจหน่อยนะครับ
โดยเฉพาะกำลังปรับ table of content
กลัวจริงๆว่าใส่ไปใส่มาจะเยอะไปหมด(เพราะเทคนิคมันเยอะมากๆ)
แต่จะพยายามให้อยู่ภายใต้ระบบของกรณีศึกษา case study
จะมีใครแนะนำหรือสอบถามเรื่องต่างๆก็ดีนะครับ(เพื่อผมจะนึกออกว่าต้องใส่อะไรเข้าไปบ้าง)
บันทึกการเข้า

http://www.ThaiBuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย
หลักการ query data กับ ออกแบบ table หรือ set index มันเกี่ยวไหมครับ
บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
หลักการ query data กับ ออกแบบ table หรือ set index มันเกี่ยวไหมครับ
เกี่ยวอย่างมากครับ
แต่มันน่าจะอยู่ในหนังสือ database design
เพราะเรื่องมันเยอะ
ผมคงจะได้แต่พูดแนวคิดเรื่อง Tunning (ในหัวข้อ High Available Database)
ขอขอบคุณมากครับ เพราะจะได้ไม่ลืมเอาไปเขียนเป็นแนวคิด
บันทึกการเข้า

http://www.ThaiBuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย
รออ่านต่อค่า   กรี๊ดดดดด
บันทึกการเข้า
กลัวอ่านไม่รู้เรื่อง

ผมควรเตรียมอ่านอะไรมาล่วงหน้าเพื่อความเข้าใจยิ่งขึ้นบ้างมั๊ยครับ
บันทึกการเข้า

ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog
อ่านไม่รู้เรื่องแสดงว่าผมยังเขียนไม่ดี
มีอะไรก็ถามหรือแนะนำได้ครับ
--------------------------
บทนำ
จากนิยามของ IEEE คำว่า High Availability นั้นจะหมายถึง การสามารถใช้งานทรัพยากรของระบบคอมพิวเตอร์ ซึ่งเราจะเน้นที่สามารถใช้งานได้ แม้ว่าระบบคอมพิวเตอร์ยังปกติแต่ไม่สามารถใช้งานได้ซึ่งอาจเกิดจากช่องทางการเข้าถึงทรัพยากรนั้นเต็ม เราจะเรียกระบบนั้นไม่เป็น High Availability พูดสรุปโดยรวมระบบของเราต้องสามารถใช้งานได้สูง ซึ่งจะกล่าวถึงเทคนิคต่างๆในเนื้อหาในช่วงต่อๆไป

“High Availability (HA for short) refers to the availability of resources in a computer system, in the wake of component failures in the system.”
http://www.ieeetfcc.org/high-availability.html

การออกแบบระบบแบบ High Availability ควรคำนึงถึง
-   downtime ที่ยอมรับได้
-   ความสามารถในการใช้ระบบ (Availability)
-   ความน่าเชื่อถือของระบบ (Reliable)
-   ความยืดหยุ่น (Flexible)
-   ค่าใช้จ่ายที่เหมาะสมที่จะตอบสนองความต้องการของธุรกิจได้ (Cost Effective)
-   การทำงานเชิงรุก การป้องกัน การแก้ไขและบริการสนับสนุน (Proactive, Preventive, Reactive and support) )
-   การกู้คืนระบบโดยเร็ว (Rapidly restore)
-   งบประมาณ(budget)และระยะเวลา(Time)ที่จะใช้ระบบ
-   ข้อตกลงของระดับการให้บริการ (Service Level Agreement:SLA)
-   ความต้องการในการสับเปลี่ยนทำงานแทน (Fail Over)
-   ระดับความปลอดภัย (Security)

รวมถึงการหาผู้เชี่ยวชาญประจำสำนักงานหรือเป็นที่ปรึกษา นอกจากนั้นควรเลือกเทคโนโลยีที่ได้พิสูจน์จากการใช้งานจริง

การวัดค่าของ High Availability
   เนื่องจาก High Availability เราเน้นที่สามารถใช้ทรัพยากรของระบบได้หรือไม่ ตัววัดของ High Availability จึงเน้นที่ Downtime หรือ เวลาที่ระบบไม่สามารถใช้งานได้ การวัดค่า High Availability จะวัดออกมาในรูปของเปอร์เซ็นต์ที่ระบบสามารถใช้งานได้ (Availability) โดยเป้าหมายสูงสุดของระบบที่เป็น High Availability ก็คือระบบที่สามารถใช้งานได้ 99.999% หรือ ที่มักเรียกกันว่า Five Nines ซึ่งหมายถึงระบบ down ได้ 5.26 นาที ใน 1 ปี


« แก้ไขครั้งสุดท้าย: 19 ก.ค. 2008, 21:42 น. โดย ลุงซัน » บันทึกการเข้า

http://www.ThaiBuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย
ตารางที่ 1.1 ค่าเปอร์เซ็นการใช้งานได้และระยะเวลา Downtime


ตารางที่ 1.2 สาเหตุของ Downtime   



รูปที่ 1.1 รูปแสดงเปอร์เซ็นต์ของความสามารถของการใช้ทรัพยากรของระบบคอมพิวเตอร์

จากรูปที่ 1.1 เราจะเห็นได้ว่าเป้าหมายของ High Availability ระดับ Five Nines นั้นอยู่ในระดับของผู้ให้บริการสือสารหรือระบบการป้องของทหาร สำหรับงานทั่วๆไปความสามารถใช้ระบบระดับ 99% ซึ่งเทียบเท่า ISP นั้นเป็นที่ยอมรับได้
เนื้อหาที่กล่าวต่อไปในบทต่างๆจะเน้นเรื่องความสามารถใช้ระบบที่อิงการใช้งานบนเวปเป็นหลักซึ่งเป็นระบบที่นิยมใช้มากที่สุด โดยจะเน้นเทคโนโลยีของ 2 ค่ายใหญ่คือ Linux (LAMP) และ Microsoft Windows (ASP.NET) เป็นหลัก โดยมีส่วนประกอบอื่นๆเพื่อให้เหมาะสมกับกรณีศึกษาในบทสุดท้าย
« แก้ไขครั้งสุดท้าย: 18 ก.ค. 2008, 18:20 น. โดย ลุงซัน » บันทึกการเข้า

http://www.ThaiBuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย
คำศัพท์ที่เกี่ยวข้องกับ High Availability
สามารถใช้งานได้ต่อเนื่อง(Continuous Availability) ซึ่งจะหมายถึงให้บริการแบบไม่หยุดและไม่พลาด ซึ่งเป็นสิ่งในอุดมคติ (ideal state) สำหรับ High Availability นั้นจะหมายถึงสามารถใช้งานได้สูงโดยอาจมี Downtime เพียงเล็กน้อย ดังนั้น High Availability จึงไม่ได้หมายถึง สามารถใช้งานได้ต่อเนื่อง
การทนทานต่อความผิดพลาด(Fault Tolerance) การทนทานต่อความผิดพลาดนั้นมุ่งเน้นให้สามารถใช้งานของระบบได้สูงในกรณีแม้ว่าจะเกิดการผิดพลาดของ Hardware และ Software ซึ่งมักจะใช้วิธีอุปกรณ์ควบคู่(Redundant) ไม่ว่าจะเป็น CPU, Memory หรือ ระบบ IO. ในหลายๆครั้งระบบ(โดยรวม)ยังสามารถใช้งานได้แม้ว่า hard disk หรือ network card ไม่สามารถเริ่ม(wake)ใช้งานได้ ระบบดังกล่าวเรายังเรียกว่าเป็น High Availability แต่ไม่เป็น Fault Tolerance กล่าวคือการออกแบบระบบ High Availability อาจไม่จำเป็นต้องใช้วิธีการเดียวกับ Fault Tolerance ตัวอย่างเช่นใช้ CPU, Memory, Harddisk ตัวเดียว ในระบบ High Availability และใช้วิธีการจัดระบบ Server แทน พูดง่ายๆว่า ระบบสามารถใช้งานได้แต่ไม่ทนทาน หรือถ้าเทียบกับหุ่นยนต์ในสายการผลิต ระบบ High Availability อาจใช้หุ่นยนต์ตัวเล็กๆช่วยกันทำงานและจัดกระบวนการการทำงาน แต่  Fault Tolerance จะเน้นที่หุ่นยนต์ที่อึดแข็งแรงแทน(อาจมีแหล่งพลังงาน 2 ชุด มีหน่วยความจำ 2 ชุ ด..ฯลฯ)
Single Point of Failure (SPOF) ในระบบของเรานั้นมี Hardware หรือ Software ที่ไม่ทำงานเพียงตัวเดียวทำให้การบริการของระบบทำงานไม่ได้ เราจะเรียกจุดดังกล่าวว่า Single Point of Failure
Failover ในระบบ High Availability เรามักจะใช้วิธีตัวตายตัวแทน ซึ่งหมายถึงส่วนประกอบตัวหนึ่งไม่ทำงาน ส่วนประกอบอีกส่วนจะทำงานแทน เราเรียกว่าวิธีการโอนย้ายการทำงานจากส่วนประกอบหนึ่งไปอีกส่วนประกอบหนึ่งว่า Failover
Service Level Agreement(SLA) เป็นข้อตกลงของระดับของการบริการ ระหว่างผู้ให้บริการกับผู้รับบริการ ซึ่งอาจไม่เกี่ยวข้องกับ High Availability เพราะไม่จำเป็นต้องระดับ 90% ขึ้นไป
-----------------------
จบตอนที่ 1 มีอะไรแนะนำได้นะครับ
อาจเขียนไม่ยาวนัก เพราะเน้นเรื่องแนวคิด(concept) เป็นหลัก
« แก้ไขครั้งสุดท้าย: 19 ก.ค. 2008, 01:49 น. โดย ลุงซัน » บันทึกการเข้า

http://www.ThaiBuddy.com (ฟรีดิกชันนารี่ ชี้แล้วแปล)
ผมรู้เล็กน้อย
อ่านไม่รู้เรื่องแสดงว่าผมยังเขียนไม่ดี
มีอะไรก็ถามหรือแนะนำได้ครับ


อ้อ เปล่าๆๆ ครับ คือผมยังไม่มีความรู้ด้านนี้เลยซักนิดน่ะครับ

เลยกลัวจะอ่านไม่รู้เรื่องเพราะไม่มีพื้นฐาน
บันทึกการเข้า

ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog
หน้า: [1] 2 3 4
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!