رفتن به محتوای اصلی
توسعه نرم‌افزار۲۴ مهر ۱۴۰۵۱۵ دقیقه مطالعه

پروژه کارنامه؛ معکوس‌نگری در طراحی یک اپلیکیشن Local-First با Tauri و SQLite

کالبدشکافی معماری و فلسفه طراحی اپلیکیشن کارنامه؛ چرا معماری محلی-اول آینده نرم‌افزارهای شخصی است و چگونه با ترکیب تائوری نسخه دو، سالید جی‌اس و اس‌کیو‌لایت یک سیستم با حریم خصوصی مطلق ساختیم.

#Local First#Tauri#SQLite#SolidJS#Software Architecture

اسارت در ابرها؛ چرا مدل Cloud-First دیگر پاسخگوی نیاز انسان نیست؟

بیش از دو دهه است که صنعت نرم‌افزار یک توافق نانوشته را به همه ما تحمیل کرده است: داده‌های شما باید روی سرورهای ابری شرکت‌ها زندگی کنند. ما برای هر یادداشت کوچک، برنامه روزانه، فهرست وظایف و حتی لیست خریدهای شخصی، ناچاریم به یک پایگاه داده ابری وصل شویم.

این رویکرد سنتی با مشکلات فلج‌کننده‌ای همراه است:

  • قطعی اینترنت مساوی است با از کار افتادن کامل ابزارهای کار روزانه
  • تاخیر مداوم شبکه و لودینگ‌های اعصاب‌خردکن برای ساده‌ترین کارهای متنی
  • نقض سیستماتیک حریم خصوصی و فروش ردپای رفتار انسان‌ها به دیتاماینرها
  • خطر بسته شدن حساب یا مسدودسازی ناگهانی سرویس‌های متمرکز

من در طراحی پروژه کارنامه تصمیم گرفتم این فرمول را صد در صد برعکس کنم. کارنامه یک ابزار آرام، سریع و کاملاً خصوصی برای سازماندهی کارهاست که بر پایه یک اصل مقدس بنا شده است: مالکیت ابدی و بی قید و شرط کاربر بر تمام داده‌ها.

در این معماری، سرور ابری هیچ اهمیتی ندارد. اگر دنیا به پایان برسد و اینترنت برای همیشه قطع شود، کارنامه بدون ذره‌ای اختلال روی لپ‌تاپ شما با حداکثر سرعت کار خواهد کرد.




شکستن قواعد پشته فنی؛ چرا تائوری نسخه دو و سالید جی‌اس؟

توسعه‌دهندگان سال‌ها برای ساخت اپلیکیشن‌های دسکتاپ به الکترون متوسل می‌شدند؛ پلتفرمی که به همراه هر پنجره ساده، یک نسخه کامل از مرورگر کرومیوم و نود را به کامپیوتر کاربر تحمیل می‌کرد. باز کردن سه اپلیکیشن الکترونی یعنی اشغال حداقل دو گیگابایت رم!

در معماری کارنامه، سه انتخاب دقیق و مهندسی صورت گرفت:

۱. تائوری نسخه دو به جای الکترون

تائوری به جای حمل مرورگر کرومیوم، از وب‌ویو نیتیو سیستم‌عامل استفاده می‌کند. هسته اپلیکیشن با زبان راست نوشته شده و ارتباط میان ظاهر و سیستم از طریق یک کانال امن با نام مستعار فراخوانی‌های دستور سیستم برقرار می‌شود. نتیجه:

  • حجم بسته نهایی زیر ده مگابایت
  • مصرف رم در حدود سی تا چهل مگابایت
  • عدم امکان تزریق اسکریپت‌های مخرب به فایل سیستم

۲. سالید جی‌اس؛ واکنش‌پذیری اتمیک بدون دام مجازی

ری‌اکت با مکانیزم بازسازی دام مجازی، برای اپلیکیشن‌های آفلاین که هزاران ردیف لیست کارهای انجام‌شده دارند لگ ایجاد می‌کند. سالید جی‌اس کامپایلری است که توابع تغییرات را مستقیماً به گره‌های واقعی صفحه متصل می‌کند. هیچ الگوریتم مقایسه درختی وجود ندارد و رندر تغییرات در یک چشم بر هم زدن اتفاق می‌افتد.

۳. اس‌کیو‌لایت بومی در حالت نوشتن پس از لاگ

پایگاه داده کارنامه اس‌کیو‌لایت است؛ پایدارترین قطعه نرم‌افزاری تاریخ بشر با میلیاردها ساعت آزمایش در فضاپیماها و گوشی‌های هوشمند. با فعال‌سازی حالت پیشرفته رایت اهید لاگ، عملیات خواندن هرگز منتظر نوشتن نمی‌ماند و کوئری‌های پیچیده تحلیلی کارنامه در کسری از میلی‌ثانیه پردازش می‌شوند.


گره کور همگام‌سازی چند دستگاه؛ جادوی ساختارهای CRDTs

بزرگ‌ترین چالش در معماری محلی این است: اگر کاربر یک وظیفه را روی گوشی تیک بزند و هم‌زمان عنوان همان کار را روی لپ‌تاپ تغییر دهد، بدون وجود سرور مرکزی چگونه این دو نسخه با هم تلفیق شوند؟

پاسخ در نوع‌های داده‌ای تکرارپذیر بدون تعارض نهفته است:

ساختارهای داده بدون تعارض CRDTs

این ساختارهای ریاضی طوری طراحی شده‌اند که ترتیب رسیدن رویدادها تاثیری در حالت نهایی ندارد. هر تغییر با یک شناسه یکتای زمانی مشخص ثبت می‌شود. چه دو دستگاه هم‌زمان به یک وای‌فای محلی وصل شوند و چه پس از یک ماه مسافرت دوباره به هم برسند، تغییرات مانند آب که در آب حل می‌شود، بدون ایجاد تعارض ادغام می‌گردند.

امنیت اطلاعات روی دیسک

کارنامه تنها به سرعت فکر نمی‌کند؛ امنیت خط قرمز ماست:

  • تمام رکوردهای حساس در فایل پایگاه داده با استاندارد اس‌کیو‌ال سایفر رمزنگاری پیشرفته می‌شوند.
  • بازگشایی قفل با حسگر اثر انگشت یا فیس‌آیدی انجام می‌پذیرد.
  • هیچ متادیتا یا کلیدی به اینترنت مخابره نمی‌شود.

در این مدل طراحی، فایل پایگاه داده شبیه به یک دفترچه یادداشت فیزیکی با ارزش است. شما می‌توانید فایل دیتابیس را روی یک فلش مموری کپی کنید یا در هارد اکسترنال پشتیبان بگیرید؛ بدون اینکه نیاز به هیچ نرم‌افزار جانبی یا خروجی گرفتن‌های مسخره ابری داشته باشید.


درس‌های آموخته از میدان پروداکشن

ساخت این پروژه آموزه‌های عمیقی برای من داشت:

۱. کاربران تشنه حریم خصوصی واقعی هستند

وقتی به افراد توضیح می‌دهید که داده‌هایشان هرگز روی هارد سرور فرد دیگری نمی‌نشیند و هیچ هوش مصنوعی ابری آن‌ها را برای تبلیغات اسکن نمی‌کند، استقبالی صمیمانه دریافت می‌کنید. جامعه به شدت از قراردادهای تحمیلی سرویس‌های ابری خسته است.

۲. چالش کانفیگ دسترسی‌ها در سیستم‌عامل‌های مختلف

تائوری برای تامین امنیت، هرگونه دسترسی به سیستم فایل، اعلان‌ها یا ابزارهای سخت‌افزاری را به طور پیش‌فرض مسدود می‌کند. نوشتن مجوزهای شفاف برای هر عملیات نیاز به انضباط دارد و مهندس را مجبور می‌کند که دقیقاً بداند هر خط کد چه دسترسی نیاز دارد.


جمع‌بندی؛ راه آرام پیش رو

معماری محلی-اول یک تکنولوژی گذرا نیست؛ یک مرام اخلاقی برای ساخت نرم‌افزارهای ماندگار است. کارنامه اثبات می‌کند که می‌توان بدون باج دادن به پلتفرم‌های ابری، نرم‌افزاری ساخت که هم مدرن و زیبا باشد، هم رعدآسا اجرا شود و هم تا پایان عمر دیسک سخت شما زنده بماند.

گفتوگو

این مطلب برایتان مفید بود؟

اگر سؤالی دارید یا میخواهید عمیقتر برویم، از راه تماس بپرسید — جواب میدهم.