กรุงเทพฯ--17 ก.ย.--Software Park
Date / Time : 8 - 10 October 2012 (9.00-17.00)
Venue : Training / Seminar Room, 3rd Floor, Software Park Building
Registration Fee : 12,840 Baht (Included VAT 7 %)
Course Overview
ปัจจุบันมีวิกฤติสำคัญหนึ่งในการพัฒนาระบบซอฟต์แวร์และแอพพลิเคชั่นมากมาย คือความสามารถในการใช้ทรัพยากรต่าง ๆ ได้อย่าง คุ้มค่าและมีประสิทธิภาพ บ่อยครั้งที่ปัญหาด้านประสิทธิภาพมักพบหลังจากการทำ performance testing ซึ่งอาจช้าเกินแกง การย้อนกลับไป ปรับแก้งานออกแบบและโค้ดจึงเป็นเรื่องยาก ทางออกที่มักทำกันหรือมักถูกบอกให้ทำคือการเพิ่มประสิทธิภาพด้านการประมวลผล? บางทีต้องตั้งคำถามกลับว่าการประมวลผลกับทรัพยากรอันไหนสำคัญกว่ากัน? เหมือนกับ CPU กับ memory อันไหนสำคัญกว่ากัน? การเพิ่มหน่วยความ จำไม่ค่อยส่งผลนักกับ license ของซอฟต์แวร์ แต่ทำไมหลายครั้งทางออกมักเป็นการเพิ่มหน่วยประมวลผล เช่น เพิ่ม CPU หรือเพิ่มเครื่อง?
โดยเฉพาะอย่างยิ่งระบบมากมายในปัจจุบันมักเป็น component-based application ที่ทำงานบน middleware เช่น แอพพลิเคชั่น เซิร์ฟเวอร์ ระบบลักษณะนี้ต้องการทรัพยากรอย่างมาก การรองรับการขยายตัวของระบบ (scalability) ก็เป็นสิ่งสำคัญที่ต้องคำนึงถึง หรืออีก วิกฤติหนึ่งในปัจจุบันในหลายองค์กรคือการพึ่งพา container หรือเฟรมเวิร์กต่าง ๆ มากจนเกินไป ปัญหาที่พบบ่อยครั้งคือผู้ใช้มักขาดความ เข้าใจในสิ่งเหล่านี้อย่างดีพอทำให้ไม่สามารถรับมือได้เนิ่น ๆ ตั้งแต่ตอนออกแบบระบบ ฉะนั้นเราจะออกแบบระบบอย่างไรให้ใช้ทรัพยากรได้อย่างคุ้มค่าและมีประสิทธิภาพและรองรับการขยายตัวได้ โดยไม่ต้องมาพบปัญหาเอาตอนทำ performance testing ภายหลังพัฒนาระบบเสร็จหรือใกล้เสร็จ หรือมาเจอเอาตอนใช้งานระบบจริง และจะได้ไม่ต้องตกเป็นเหยื่อด้านค่าฮาร์ดแวร์และ license ของซอฟต์แวร์มหาโหดในปัจจุบัน และมักแฝงเร้นไม่ยอมบอกให้เคลียร์ตั้งแต่เนิ่น ๆ มักมาบอกกันตอนเจอทางตันที่ไม่อาจปฏิเสธได้แล้ว
หลักสูตรนี้จึงออกแบบมาเพื่อให้ผู้เรียนมีความรู้ความเข้าใจในคุณภาพด้านประสิทธิภาพ (performance) และการจัดการทรัพยากร (resource management) และนำเสนอแนวทางสำหรับวิเคราะห์และออกแบบระบบที่ต้องการคุณภาพด้านประสิทธิภาพสูง ไม่ว่าจะเป็นระบบ ประเภท embedded system, mobile application, business application, enterprise system และอื่น ๆ เพื่อให้ผู้เรียนตระหนักถึงประเด็นสำคัญ (concerns) ที่ต้องคำนึงเวลาออกแบบระบบที่ต้องการประสิทธิภาพสูง ๆ รวมถึงการจัดการด้าน scalability (การรองรับการขยายตัวของระบบ) และสามารถรับมือและจัดการได้ โดยไม่ต้องเสียค่าใช้จ่ายฟุ่มเฟือยที่เกินความจำเป็นภายหลัง
หลักสูตรนี้ มุ่งเน้นการสร้างความเข้าใจในหลักการด้านการออกแบบระบบที่ต้องการคุณภาพด้านประสิทธิภาพสูง ซึ่งจำเป็นต้องใช้ทรัพยากรต่าง ๆ อย่าง ‘คุ้มค่า’ โดยเน้นทั้งพื้นฐานและหลักการวิเคราะห์และออกแบบ โดยมุ่งหวังให้ผู้เรียนสามารถนำความรู้ที่ได้กลับไปประยุกต์กับงานได้ ไม่ว่าผู้เรียนจะออกแบบและพัฒนาระบบประเภทใดหรือใช้เทคโนโลยีใดอยู่ และหากมีข้อสงสัยต้องการปรึกษากับผู้สอนภายหลังการอบรม อันเนื่องจากจำนวนวันอบรมที่จำกัด ก็สามารถทำได้โดยผ่านเว็บไซต์สังคมออนไลน์ต่าง ๆ และการติดต่อผ่านทางช่องทางต่าง ๆ ตามตกลงกันระหว่างผู้สอนและผู้เรียนระหว่างอบรม
Course Audience
การอบรมนี้ออกแบบมาสำหรับ solution architect, system analyst, software architect, enterprise architect, IT architect, requirement engineer, IT manager, programmer, developer, performance engineer, tester และผู้ที่สนใจทั่วไป
พื้นฐานของผู้เข้ารับการอบรม (Prerequisities)
ผู้เรียนควรมีความรู้และทักษะพื้นฐานด้านการพัฒนาซอฟต์แวร์, Object-Orientation, การวิเคราะห์และออกแบบระบบ และ Software Development Life Cycle (หลักสูตรนี้มีการใช้ UML บ้าง แต่ไม่มากนัก)
Course Contents
Performance and Resource Management Overview
- What is Performance?
- Understanding the Resource
- Demand and Supply
- Event Source and Arrival Patterns
- Understanding Multi-Process and Multi-Thread
- Resource Consumption
- Resource Constraint and Other Constraints
- Overview of Resource Management
- Scope of Resource Management
- Scheduling Strategies
- What is Granularity?
- Performance Attributes (เช่น latency, response time, responsiveness, throughput, jitter, miss rate, data lost ฯ)
- Understanding the Cost Effect
- Understanding the ACID
- Overview of State Transition and State Management
- Overview of Unit of Work, Transaction and Sub Transaction
- What is Scalability?
- Scalability Methods
Analysis
- Analyzing Business Processes and Rules
- Analyzing Client Behaviors
- Analyzing Service (application service and/or business service)
- Analyzing Resource Systems and Connection
- Analyzing Transaction Data and Data Transformation
- Analyzing Architectural Layers and Tiers
- Using Scenario for Detailing Performance Concerns
- Using Performance General Scenario
- Analyzing variability of Performance and Scalability
- Categorizing Relevant Resources
- Modeling Processes
- Modeling Processes and Resources Matrix
- Analyzing Process and Resource Consumption
Design
- Architectural Tactics
- Two basic contributors to the response time: Resource Consumption and Blocked Time
- Resource Demand
- Increase computational efficiency
- Reduce computational overhead
- Manage event rate
- Control frequency of sampling
- Bound executions times
- Bound queue sizes
- Resource Management
- Introduce concurrency
- Maintain multiple copies of either data or computations
- Increase available resources
- Resource Arbitration
- First-in/First-out
- Fixed-priority scheduling: semantic importance, deadline monotonic, rate monotonic
- Dynamic priority scheduling: round robin, earliest deadline first
- Stat scheduling
- Architectural Patterns (from POSA 3) :
- Resource Acquisition
- Lookup
- Lazy Acquisition
- Eager Acquisition
- Partial Acquisition
- Resource Lifecycle
- Caching
- Pooling
- Coordinator
- Resource Lifecycle Manager
- Resource Release
- Leasing
- Evictor
- Short Brief for Recommended Architectural Patterns (from POSA 2) :
- Service Access and Configuration
- Wrapper Fa?ade
- Component Configurator
- Interceptor
- Extension Interface
- Event Handling
- Reactor
- Proactor
- Asynchronous Completion Token
- Acceptor-Connector
- Synchronization
- Scoped Locking
- Strategized Locking
- Thread-Safe Interface
- Double-Checked Locking Optimization
- Concurrency
- Active Object
- Monitor Object
- Half-Sync/Half-Async
- Leader/Followers
- Thread-Specific Storage
Additional Concerns
- Handling Variations and Budget
- Recheck about Clustering: Need for Performance or Availability?
- Compromising with Other System Qualities, Especially Modifiability, Scalability and Availability
- Interesting Patterns for Handling Performance and Scalability (เช่น Transaction Script, Unit of Work, Facade, Business Delegate, Proxy, Gateway, Optimistic Offline Lock, Pessimistic Offline Lock, Coarse Grained Lock, Implicit Lock, Decorator, Bridge, Strategy, Composite, Flyweight, Command, Chain of Responsibility, State, Template Method, Domain Model, Repository, Prototype, Repository, Lazy Load, Mapping, State, Memento, Observer, Interpreter, Adapter, Abstract Factory, Factory Method, Builder เป็นต้น)
Course Benefits
- เข้าใจพื้นฐานด้าน performance และ resource management
- เข้าใจการวิเคราะห์ปัจจัยต่าง ๆ ที่มีผลต่อการใช้ทรัพยากรและการทำงานของ process ต่าง ๆ ในระบบ เช่น business process, rules, client behavior, service, resource, transaction data, layer, tier, session, object, data model ฯลฯ
- เข้าใจการออกแบบระบบที่ต้องมีประสิทธิภาพสูงและรองรับการขยายตัวได้
- ได้เรียนรู้ architectural tactic ต่าง ๆ เพื่อการจัดการด้าน performance โดยเฉพาะ
- ได้เรียนรู้ architectural pattern ต่าง ๆ ทางด้านการจัดการทรัพยากรสำหรับระบบที่ต้องการประสิทธิภาพสูง
- เข้าใจประเด็นสำคัญอื่น ๆ ที่สำคัญต่อระบบที่ต้องการคุณภาพด้านประสิทธิภาพสูง ๆ รวมถึงการจัดการด้าน scalability อีกด้วย
- สามารถนำความรู้ที่ได้รับกลับไปประยุกต์กับงานได้
- สามารถปรึกษากับผู้สอนภายหลังการอบรมได้อีกด้วย
ติดต่อหรือสำรองที่นั่งได้ที่
Juntima Klumchaun
Technology Transfer Department
Software Park Thailand
Tel: 02-583-9992 ext. 1424
Fax: 02-583-2884
E-mail: juntima@swpark.or.th