ผมได้งานสร้างเว็บลักษณะ Query ฐานข้อมูล (มีประมวลผลด้วยเล็กน้อย) ไม่รู้ว่าจะเรียกว่าเว็บแอพได้หรือเปล่า มีลักษณะประมาณนี้

  • หน้าเว็บไม่ได้มีอะไรหวือหวา แบ่งเป็นสามส่วนหลัก คือ 1.ด้านบน เป็นชื่อเว็บ (และโลโก้) และการล็อคอิน 2.ด้านซ้ายเป็นแถบเมนู ถ้าทำได้อยากให้ยุบ-แยกได้ 3.ตัวเนื้อหา อันนี้จะหลากหลายหน่อย ขึ้นอยู่กับเลือกเมนูอะไรอยู่ มีทั้งตาราง รูปภาพ ปุ่มนู่น นี่ นั่น (ปุ่มที่สั่งให้เอาข้อมูลมาประมวลผลก็อยู่ในนี้แหละ)
  • การประมวลผล ประมวลที่ Server เพราะงานมันเล็ก ๆ วนลูปเพื่อทำ Trial & Error ไปเรื่อย ๆ จนได้ค่าไกล้เคียง คิดว่าไม่น่าเกินพันลูป นอกนั้น Query แล้วเอามาแสดงผลล้วน ๆ
  • ฐานข้อมูลเบื้องหลัง ไม่ใหญ่อะไรมาก คิดว่าอยู่ราว ๆ 30 กว่าตาราง ตารางที่ข้อมูลเยอะสุดราว ๆ หลักพันข้อมูล
  • ผู้ใช้งาน peak สุดไม่น่าเกินร้อยคน

ผมเข้าใจว่าเครื่อง Server นี่ไม่ต้องกังวลเลย ใช้ PC ถูก ๆ สมัยนี้ (ไม่เกิน 20,000 ทั้งชุด ไม่รวมซอฟต์แวร์) ก็รับ Load ได้สบาย ๆ ผมออกแบบฐานข้อมูลไว้คร่าว ๆ แล้ว (ตารางความสัมพันธ์ธรรมดา ๆ) รวมทั้งหน้าตาโดยรวมคร่าว ๆ ของเว็บด้วย

ทีนี้มาถึงคำถาม

  1. ข้างบนนี้ผมเข้าใจถูกหรือเปล่า?
  2. สำหรับผมที่มีความรู้ทำได้แค่เท่าที่เล่าให้ฟัง รู้จัก html อยู่บ้าง เคยอ่านเรื่องฐานข้อมูลมา (แต่ไม่เคยทำจริงครั้งนี้ครั้งแรกเลย) เคยเขียนโปรแกรมแต่ไม่เคยเขียนเว็บ (โปรแกรมที่เขียนก็เล็กจนรู้สึกกระดากถ้าจะเรียกมันว่าโปรแกรม -*-) พอจะรู้อยู่บ้างว่าจะเขียนเว็บต้องมีตัวจัดการฐานข้อมูล มี server มี UI เป็นหน้ากากส่งคำสั่งไปคุยกับตัวจัดการฐานข้อมูล ฯลฯ (แต่ไม่เคยทำเอง) ไม่ทราบว่าจะแนะนำให้ผมลุยต่อหรือจ้างคนทำดีครับ (มีเวลา 2 เดือนให้ได้ prototype ออกมา)
  3. ถ้าแนะให้ลุยต่อ รบกวนขอแผนที่หน่อยครับ ผมควรจะใช้ DBMS เจ้าไหนดี ทำ server ยังไงดี ทำเว็บด้วยอะไรดี ถึงจะพอเหมาะกับงาน (คือไม่ต้องมากเกิน เดี๋ยวศึกษาไม่ไหวครับ = =a)
  4. ถ้าแนะให้จ้างเถอะ คิดว่างานแบบนี้จะประมาณเท่าไหร่ครับ (แนะนำคนทำให้ด้วยก็ดีนะครับ อิอิ)

ขอบคุณทุกท่านล่วงหน้าเลยครับ q^/|^p

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ถ้าเพิ่งเคยทำครั้งแรก มีเวลาจำกัด และคิดว่าไม่น่าจะศึกษาทันจนตอนจบเขียนออกมาได้ด้วยดี แนะนำให้จ้างไปก่อนครับ

สำหรับเรื่อง server ถ้าระบบไม่เยอะไม่ต้องซื้อเครื่องก็ได้ครับ ใช้พวก vps ไปก่อนน่าจะไหว แล้วค่อยหาโอกาสขยับขยายทีหลังครับ

ทำเว็บ ถ้าเอาศึกษาง่ายๆ คนใช้เยอะ เดี๋ยวนี้สูตรสำเร็จก็ php + mysql ครับผม

ส่วนค่าจ้าง แนะนำให้เขียน spec อย่างละเอียด ทาง dev จะได้ประเมิน manday + ราคาให้ถูกครับ

ขอบคุณครับสำหรับคำตอบ

  • มีแนวโน้มจะต้องจ้างสูงแฮะ
  • server มันต้องซื้ออยู่ดีน่ะครับ มันกำหนดมาใน TOR (แต่ไม่ได้ระบุราคาตายตัว)
  • เดี๋ยวผมจะลองศึกษา php + mysql ไปด้วย (ว่าแต่ mysql เดี๋ยวนี้มีแต่ยักษ์ใหญ่ทยอยย้ายออกไม่ใช่เหรอครับ ๕๕๕)
  • มีแผนผัง database ให้ ออกแบบหน้าตาคร่าว ๆ ให้ และมี Software Requirement อีกพอสมควร (ด้าน security และ performance) ถือว่าละเอียดหรือยังครับ?

ดูเหมือนจะใช้ภายในบริษัท

  • ข้อมูลที่นำมาแสดงมันหลากหลาย ตรงนี้อาจจะต้องใช้เวลาลองผิดลองถูก
  • PHP + SQL ถ้าพอมีพื้นฐานการเขียนโปรแกรมมาบ้าง ไม่ค่อยยากมากนัก ฐานข้อมูลก็ใช้ PDO ช่วย
  • หากมีการ join ฐานข้อมูลเยอะ ซับซ้อนอาจจะงง
  • ถ้าเขียน HTML + CSS ไม่เป็น อาจจะยากสักนิดนะ ถึงมันไม่ซับซ้อน แต่แต่งออกมาให้ดูดีไม่ง่ายนัก

ภายในเวลาสั้น ๆ คุณมีเวลาเรียนรู้พวก PHP, SQL, HTML, CSS จนพอจะเข้าใจคอนเซ็ปท์ รูปแบบคำสั่ง และผลที่ออกมาได้ไหม? ถ้าได้ คุณสามารถใช้ Google หาวิธีการเรียกใช้/เขียน code บางส่วนจากอินเทอร์เน็ตได้ (stackoverflow) ลองดูโค้ด ลองดูรูปแบบ ดูว่าเอามาประยุกต์กับงานได้ไหม (ว่าแต่ตอนนี้เห็นภาพรวมของงานที่จะออกมาหรือยังครับ ว่าอะไรควรจะเป็นแบบไหนยังไง?)

ถ้าโอเคก็ลองทำดูได้นะครับ แต่งานที่ได้อาจจะไม่ได้ดีอะไรมาก และคุณอาจจะต้องปรับแก้มันอยู่เรื่อย ๆ กว่ามันจะเข้าที่เข้าทาง

อย่าลืมพิจารณาความเสี่ยง/เสียโอกาสด้วยนะครับ (ถ้าเป็นงานสำคัญ ๆ)

  • PHP + SQL ผมรู้จัก มีความรู้อยู่บ้าง แต่ไม่เคยทำจริงเลย ส่วน POD นี่เพิ่งเคยได้ยิน เดี๋ยวไปหาข้อมูลดูก่อน
  • join ฐานข้อมูลไม่เยอะมากครับ แต่คิดว่าน่าจะทำให้งงได้พอสมควร ๕๕๕
  • HTML + CSS ก็รู็จัก เข้าใจคอนเซ็ปท์ แต่ไม่เคยทำจริงอีกเช่นกัน (เคยทำไรบ้างเนี่ย!!) แต่ผมไม่หวังดูดีนะ เพราะผมเข้าใจว่าทำให้ดูดีขึ้นหน่อยความยากจะเพิ่มขึ้นแบบ Logarithm ณ ตอนนี้ผมออกแบบให้เข้าใจง่าย ไว้ก่อน ไม่สวยช่างมัน
  • ภาพรวมของงานออกมาแล้ว มีฐานข้อมูลและ mock up หน้าตาเว็บในเมนูต่าง ๆ ผมควรเตรียมอะไรอีกบ้างครับ?
  • เดี๋ยวจะลองกลับไปศึกษาทบทวน PHP, SQL, HTML, CSS ดู คงต้องประเมินว่าตกลงทำเองไหวหรือเปล่า

ขอบคุณสำหรับคำนะนำครับ ^^

จ้างดีกว่า เชื่อผมเวลาน้อยไป...
เข้าใจว่ามีเบสิคโปรแกรมมิ่ง แต่ถ้ามีเวลา 4-6 เดือนอาจทัน
(จากประสบการณ์เคยหัดเขียน PHP โปรเจคเล็กๆ สามสีเดือน มานานแล้ว
พอมาเขียนระบบใหญ่ของจริง เกือบหกเดือนกว่าจะเขียนได้ดั่งใจและเข้าใจระบบ )

หากมีคำสั่งต้องการลูกเล่นเพิ่มเติมคุณต้องมารีเสริชหาวิธีอีก
เครียดสร้างความกดดันป่าวๆ

จ้างแล้วค่อยมาแกะโค๊ดศึกษาเอาดีกว่า

-Rookies- Fri, 20/09/2013 - 16:29

In reply to by likhi1

อืม ขอบคุณมากที่แชร์ประสลการณ์ครับ ผมก็คิดว่าคงจะจ้างแล้วล่ะ แต่ก็คงอ่าน ๆ ไปด้วย จะได้คุยกันรู้เรื่อง ^^

การประมวลผล ประมวลที่ Server เพราะงานมันเล็ก ๆ วนลูปเพื่อทำ Trial & Error ไปเรื่อย ๆ จนได้ค่าไกล้เคียง คิดว่าไม่น่าเกินพันลูป นอกนั้น Query แล้วเอามาแสดงผลล้วน ๆ

ลองกำหนด scope ของงานดูหน่อยครับ อย่าง
-'วนลูปเพื่อทำ Trial & Error ไปเรื่อย ๆ จนได้ค่าไกล้เคียง คิดว่าไม่น่าเกินพันลูป' ต้องเสร็จภายในเวลาเท่าใด เกิดจากการทำงานกี่ตาราง/เรคคอร์ด การคำนวนซับซ้อนมากขนาดไหน สามารถใช้ function ง่ายๆเช่น SUM คำนวนได้ไหม หรือจำเป็นต้องเขียนโปรแกรมเพื่อนำมาคำนวนต่างหาก (เพราะถ้านำไปคำนวนใน interpreter อย่าง PHP ตรงๆการคำนวนบางอย่างจะช้ามาก)
-'ผู้ใช้งาน peak สุดไม่น่าเกินร้อยคน' ทั้งหมดคือ concurrent ใช่ไหมครับ แต่ละคนต้อง 'วนลูปเพื่อทำ Trial & Error ไปเรื่อย ๆ จนได้ค่าไกล้เคียง คิดว่าไม่น่าเกินพันลูป' ทุกคนหรือไม่ ถ้าใช่ ทำบ่อยแค่ไหน หรือ cache ค่าได้ไหม
-etc. เช่น การขยายตัวของข้อมูล

คือหลักๆมันติดตรงคำว่าการคำนวนนี่แหละครับ ถ้าเป็น RDBMS เก็บ transaction แล้วนำไปแสดงผลธรรมดาๆมีคำนวนนิดๆหน่อยๆนี่ง่ายมั่กๆ

  • เสร็จในเวลาระดับ "หลายวินาที" ได้ครับ คือไม่หน่วงเวอร์จนเกินไป (เกิน 10 วิคือหน่วงเกินไปละ) คำนวณจากประมาณไม่เกิน 20 ตาราง ดึงมาตารางละ 2-3 เรคคอร์ด ไม่ซับซ้อนมาก บวกลบคูณหารธรรมดา ๆ ครับ ไม่ทราบว่าจะมีปัญหาหรือเปล่าครับ
  • แต่ละคนไม่จำเป็นต้องวนลูปพร้อมกัน คืองานวนลูปเป็นงานหนักที่สุดเลยยกตัวอย่างมาครับ (ซึ่งมีจุดเดียวที่ใช้งานฟังก์ชันนี้) แต่สิ่งที่เว็บทำได้จะมีมากกว่านั้นมาก (เป็นการ query, edit, delete ซะส่วนใหญ่) คิดว่าถ้าบังเอิญใช้ฟังก์ชันวนลูปพร้อมกัน อย่างซวยสุดคงไม่เกิน 30 คนพร้อมกันล่ะมั้งนะ (ถ้าฟังก์ชันนี้ทำงานเสร็จภายใน 10 วินาที) Note: การใช้งานส่วนใหญ่คงจะ Qurey แล้วนั่งมองดูข้อมูลที่ขึ้นบนหน้าจอเสียมากกว่า ดังนั้น server ไม่ได้ทำงานให้ผู้ใช้คนหนึ่ง ๆ ตลอดเวลาแน่นอนครับ
  • การขยายตัวก็แอบเป็นห่วงอยู๋เหมือนกัน ผมเลยพยายามออกแบบให้ข้อมูลที่ใช้บ่อยเพิ่ม-ลดที่เรคคอร์ด จะมีเฉพาะข้อมูลสำคัญ ๆ บางอย่างที่ไม่ได้เพิ่ม-ลดกันบ่อย ๆ เท่านั้นที่เพิ่มเป็นตารางใหม่เลย (เช่น Category) เพื่อความเป็นอิสระกันของข้อมูล ผมทำถูกหรือเปล่าเนี่ย = =a
  • มีพี่ที่รู้จักเคยแนะนำให้คำนวณไว้ล่วงห้าแล้วยัดข้อมูลลงตารางไว้เลยจะได้ไม่ช้า แต่ผมไม่แน่ใจ เนื่องจากข้อมูลมันเพิ่ม-ลด ได้ตลอด กลัวจะมีปัญหาทีหลัง เลยออกแบบให้คำนวณเอาอย่างเดียว มีคำแนะนำไหมครับ

ถ้าแบบนั้นจะเอาแบบไหนก็สบายเลยครับ ^^ ปัญหาเรื่อง performance น่าจะน้อย

การขยายตัวก็แอบเป็นห่วงอยู๋เหมือนกัน ผมเลยพยายามออกแบบให้ข้อมูลที่ใช้บ่อยเพิ่ม-ลดที่เรคคอร์ด จะมีเฉพาะข้อมูลสำคัญ ๆ บางอย่างที่ไม่ได้เพิ่ม-ลดกันบ่อย ๆ เท่านั้นที่เพิ่มเป็นตารางใหม่เลย (เช่น Category) เพื่อความเป็นอิสระกันของข้อมูล ผมทำถูกหรือเปล่าเนี่ย = =a

แล้วแต่การออกแบบครับ เช่น Category มี record จำนวนเท่าไหร่ เวลานำไปคำนวนต้องใช้มากขนาดไหน ส่วนเรื่องข้อมูลถ้ามันไม่โตไปถึงหลักแสนหลักล้าน record ก็ยังไม่ต้องเป็นห่วงครับกับการ query ธรรมดา การทำ index ปกติก็น่าจะช่วยได้

ส่วนการแตกไปเป็น table ใหม่ๆต้องดูด้วยครับว่าเวลาเรา query มาคำนวนตัวที่หนักๆ เราต้อง query table แยกย่อยมาด้วยหรือเปล่า table แยกย่อยมีจำนวนกี่ record (ตรงนี้อยู่ที่การออกแบบ อย่าลืมว่าทุกการ join คือการคูณกัน แต่ถ้าข้อมูลยังค้างอยู่ใน cache อยู่ก็จะไม่เป็นไปัญหาเท่าไหร่)

เรื่องนี้มันมีเน้นสองแบบก็คือความไวในการ read กับความไวในการ write

  • ถ้าจะเน้นความไวในการ write ก็ทำเป็น 3rd/BC normal form ปกติ จะเขียนข้อมูลได้เร็ว ใช้เนื้อที่บันทึกข้อมูลน้อย
  • ถ้าเน้นความเร็วในการ read และคำนวน ก็ลด normal form ลง เช่นเอาเรื่อง/ค่าที่น่าจะคำนวนบ่อยๆมาใส่ในตารางหลัก แต่ก็จะใช้พื้นที่ในการบันทึกข้อมูลมากขึ้น

ตรงนี้มันขึ้นอยู่กับการออกแบบหน่ะครับ ผมคงช่วยอะไรไม่ได้มาก -0-;;