﻿1
00:00:01,570 --> 00:00:02,930
‫Instruktur: Sampai saat

2
00:00:02,930 --> 00:00:05,960
‫ini, kami baru saja menulis kode kami tanpa

3
00:00:05,960 --> 00:00:08,670
‫berpikir banyak tentang arsitektur aplikasi kami.

4
00:00:08,670 --> 00:00:11,200
‫Itu tidak terlalu penting sampai

5
00:00:11,200 --> 00:00:14,550
‫sekarang, tetapi sekarang aplikasi kita benar-benar mulai tumbuh,

6
00:00:14,550 --> 00:00:15,770
‫kita perlu

7
00:00:15,770 --> 00:00:19,400
‫mulai mengkhawatirkan cara kita mendesain, atau mengkodekan arsitektur.

8
00:00:19,400 --> 00:00:22,320
‫Dan kuliah ini hanya akan menjadi pengantar

9
00:00:22,320 --> 00:00:24,010
‫singkat untuk arsitektur back-end.

10
00:00:24,010 --> 00:00:26,893
‫Dimulai dengan arsitektur MVC.

11
00:00:28,410 --> 00:00:30,580
‫Jadi, dalam proyek ini,

12
00:00:30,580 --> 00:00:33,420
‫kita akan menggunakan arsitektur yang banyak

13
00:00:33,420 --> 00:00:36,300
‫digunakan dan terkenal yang disebut model,

14
00:00:36,300 --> 00:00:38,720
‫view, controller atau disingkat MVC.

15
00:00:38,720 --> 00:00:40,000
‫Dan ada

16
00:00:40,000 --> 00:00:42,660
‫berbagai cara untuk mengimplementasikan arsitektur MVC, beberapa

17
00:00:42,660 --> 00:00:44,530
‫lebih kompleks daripada yang lain,

18
00:00:44,530 --> 00:00:45,840
‫tetapi kami akan mengimplementasikannya

19
00:00:45,840 --> 00:00:48,400
‫dengan cara yang sangat mudah di sini.

20
00:00:48,400 --> 00:00:50,080
‫Saya hanya ingin memberi tahu

21
00:00:50,080 --> 00:00:52,140
‫Anda bahwa jika Anda mencari MVC di

22
00:00:52,140 --> 00:00:54,910
‫Google, Anda akan menemukannya diimplementasikan dalam beberapa cara berbeda.

23
00:00:54,910 --> 00:00:57,850
‫Oke, bagaimanapun, dalam arsitektur ini, lapisan

24
00:00:57,850 --> 00:00:59,620
‫model berkaitan dengan segala

25
00:00:59,620 --> 00:01:02,420
‫sesuatu tentang data aplikasi, dan

26
00:01:02,420 --> 00:01:04,150
‫logika bisnis.

27
00:01:04,150 --> 00:01:06,360
‫Dan kita akan mempelajari apa arti logika bisnis

28
00:01:06,360 --> 00:01:07,333
‫di slide berikutnya.

29
00:01:08,180 --> 00:01:10,820
‫Selanjutnya, kita memiliki lapisan pengontrol

30
00:01:10,820 --> 00:01:12,850
‫dan fungsi pengontrol adalah

31
00:01:12,850 --> 00:01:15,380
‫untuk menangani permintaan aplikasi, berinteraksi

32
00:01:15,380 --> 00:01:16,780
‫dengan model,

33
00:01:16,780 --> 00:01:19,500
‫dan mengirim kembali tanggapan ke klien.

34
00:01:19,500 --> 00:01:22,540
‫Dan semua itu disebut logika aplikasi.

35
00:01:22,540 --> 00:01:24,950
‫Terakhir, lapisan tampilan diperlukan jika

36
00:01:24,950 --> 00:01:27,880
‫kita memiliki antarmuka grafis di aplikasi kita.

37
00:01:27,880 --> 00:01:30,010
‫Atau dengan kata lain, jika kita

38
00:01:30,010 --> 00:01:32,410
‫sedang membangun situs web yang dirender sisi server,

39
00:01:32,410 --> 00:01:34,280
‫seperti yang kita bicarakan sebelumnya.

40
00:01:34,280 --> 00:01:36,870
‫Dalam hal ini, lapisan tampilan pada dasarnya terdiri

41
00:01:36,870 --> 00:01:38,981
‫dari templat yang digunakan untuk

42
00:01:38,981 --> 00:01:43,060
‫menghasilkan tampilan, sehingga situs web yang akan kita kirim kembali ke klien.

43
00:01:43,060 --> 00:01:45,690
‫Dan itulah logika presentasi.

44
00:01:45,690 --> 00:01:48,500
‫Untuk saat ini, kami baru saja

45
00:01:48,500 --> 00:01:51,780
‫membangun API, jadi kami belum terlalu peduli dengan tampilan.

46
00:01:51,780 --> 00:01:54,180
‫Itu untuk sedikit kemudian dalam kursus.

47
00:01:54,180 --> 00:01:57,650
‫Jadi menggunakan pola, atau arsitektur seperti ini memungkinkan kita

48
00:01:57,650 --> 00:02:00,430
‫untuk menulis aplikasi yang lebih modular, yang

49
00:02:00,430 --> 00:02:03,180
‫akan jauh lebih mudah untuk dipelihara dalam

50
00:02:03,180 --> 00:02:04,550
‫skala, jika diperlukan.

51
00:02:04,550 --> 00:02:06,200
‫Dan kita bisa melangkah lebih

52
00:02:06,200 --> 00:02:08,730
‫jauh, dan menambahkan lebih banyak lapisan abstraksi di sini.

53
00:02:08,730 --> 00:02:11,170
‫Namun dalam aplikasi yang lebih kecil seperti

54
00:02:11,170 --> 00:02:14,643
‫ini, arsitektur MVC sudah lebih dari cukup untuk kebutuhan kita.

55
00:02:15,520 --> 00:02:17,635
‫Sekarang, semua ini mungkin

56
00:02:17,635 --> 00:02:21,700
‫terdengar agak abstrak, jadi mari kita lihat MVC dalam

57
00:02:21,700 --> 00:02:24,510
‫konteks aplikasi kita, dan siklus permintaan-tanggapan.

58
00:02:24,510 --> 00:02:28,050
‫Jadi seperti biasa, semuanya dimulai dengan permintaan.

59
00:02:28,050 --> 00:02:30,760
‫Permintaan itu akan mengenai salah satu router kami,

60
00:02:30,760 --> 00:02:33,410
‫karena ingat, kami memiliki banyak router.

61
00:02:33,410 --> 00:02:35,330
‫Pada dasarnya, satu untuk

62
00:02:35,330 --> 00:02:38,390
‫setiap sumber daya, seperti tur, pengguna, dan lain-lain.

63
00:02:38,390 --> 00:02:41,520
‫Sekarang tujuan dari router adalah untuk mendelegasikan permintaan

64
00:02:41,520 --> 00:02:43,360
‫ke fungsi handler yang

65
00:02:43,360 --> 00:02:46,310
‫benar, yang akan berada di salah satu controller.

66
00:02:46,310 --> 00:02:48,420
‫Dan lagi, akan ada satu pengontrol

67
00:02:48,420 --> 00:02:50,320
‫untuk setiap sumber daya

68
00:02:50,320 --> 00:02:54,530
‫kami, untuk menjaga agar bagian-bagian berbeda dari aplikasi ini terpisah dengan baik.

69
00:02:54,530 --> 00:02:57,090
‫Kemudian, tergantung pada permintaan yang masuk,

70
00:02:57,090 --> 00:02:59,360
‫pengontrol mungkin perlu berinteraksi dengan

71
00:02:59,360 --> 00:03:01,010
‫salah satu model,

72
00:03:01,010 --> 00:03:02,330
‫misalnya untuk

73
00:03:02,330 --> 00:03:04,460
‫mengambil dokumen tertentu dari database,

74
00:03:04,460 --> 00:03:06,490
‫atau untuk membuat yang baru.

75
00:03:06,490 --> 00:03:10,350
‫Sekali lagi, ada satu file model untuk setiap sumber daya.

76
00:03:10,350 --> 00:03:12,560
‫Setelah mendapatkan data dari

77
00:03:12,560 --> 00:03:15,760
‫model, pengontrol mungkin akan siap untuk mengirim kembali

78
00:03:15,760 --> 00:03:19,320
‫respons ke klien, misalnya, yang berisi data tersebut.

79
00:03:19,320 --> 00:03:22,240
‫Sekarang, jika kita ingin benar-benar membuat situs web, ada

80
00:03:22,240 --> 00:03:24,100
‫satu langkah lagi yang terlibat.

81
00:03:24,100 --> 00:03:26,950
‫Dalam hal ini, setelah mendapatkan data dari model,

82
00:03:26,950 --> 00:03:28,490
‫pengontrol kemudian akan

83
00:03:28,490 --> 00:03:32,200
‫memilih salah satu template tampilan dan memasukkan data ke dalamnya.

84
00:03:32,200 --> 00:03:34,900
‫Situs web yang diberikan itu kemudian akan

85
00:03:34,900 --> 00:03:36,670
‫dikirim kembali sebagai tanggapan.

86
00:03:36,670 --> 00:03:38,860
‫Di lapisan tampilan di aplikasi

87
00:03:38,860 --> 00:03:41,990
‫Express biasanya ada satu templat tampilan untuk setiap halaman.

88
00:03:41,990 --> 00:03:43,760
‫Seperti halaman ikhtisar

89
00:03:43,760 --> 00:03:46,580
‫tur, halaman detail tur, atau halaman login.

90
00:03:46,580 --> 00:03:49,470
‫Dalam contoh aplikasi terbaru kami tentunya.

91
00:03:49,470 --> 00:03:52,630
‫Jadi, itulah gambaran umum dari arsitektur yang akan

92
00:03:52,630 --> 00:03:54,930
‫kita terapkan dalam proyek ini.

93
00:03:55,940 --> 00:03:58,050
‫Sekarang untuk menyelesaikannya, izinkan saya

94
00:03:58,050 --> 00:04:01,320
‫membahas sedikit lebih detail tentang model dan pengontrol.

95
00:04:01,320 --> 00:04:04,110
‫Jadi, salah satu tujuan besar MVC

96
00:04:04,110 --> 00:04:05,970
‫adalah memisahkan logika

97
00:04:05,970 --> 00:04:08,010
‫bisnis dari logika aplikasi.

98
00:04:08,010 --> 00:04:10,590
‫Anda akan mendengar tentang jenis logika ini setiap

99
00:04:10,590 --> 00:04:12,420
‫saat ketika Anda menelusuri Stack

100
00:04:12,420 --> 00:04:14,260
‫Overflow, atau beberapa situs seperti itu.

101
00:04:14,260 --> 00:04:17,650
‫Tapi apa sebenarnya jenis logika ini?

102
00:04:17,650 --> 00:04:20,670
‫Yah, perbedaannya sedikit berargumentasi, tetapi ini pendapat

103
00:04:20,670 --> 00:04:22,730
‫saya: Jadi, logika aplikasi

104
00:04:22,730 --> 00:04:25,590
‫adalah semua kode yang hanya berkaitan

105
00:04:25,590 --> 00:04:27,340
‫dengan implementasi

106
00:04:27,340 --> 00:04:29,120
‫aplikasi dan bukan masalah

107
00:04:29,120 --> 00:04:31,060
‫bisnis mendasar yang sebenarnya

108
00:04:31,060 --> 00:04:33,890
‫kami coba selesaikan dengan aplikasi .

109
00:04:33,890 --> 00:04:35,930
‫Seperti menampilkan dan

110
00:04:35,930 --> 00:04:38,160
‫menjual wisata, mengelola stok

111
00:04:38,160 --> 00:04:40,830
‫di supermarket, atau mengatur perpustakaan, misalnya.

112
00:04:40,830 --> 00:04:42,670
‫Jadi sekali lagi, logika

113
00:04:42,670 --> 00:04:45,470
‫aplikasi adalah logika yang membuat aplikasi benar-benar berfungsi.

114
00:04:45,470 --> 00:04:49,100
‫Misalnya, sebagian besar logika aplikasi di Express,

115
00:04:49,100 --> 00:04:52,490
‫adalah tentang mengelola permintaan dan tanggapan.

116
00:04:52,490 --> 00:04:54,600
‫Jadi, dalam arti tertentu, kita juga

117
00:04:54,600 --> 00:04:58,100
‫dapat mengatakan bahwa logika aplikasi lebih banyak tentang hal-hal teknis.

118
00:04:58,100 --> 00:05:00,490
‫Juga, jika kita memiliki tampilan di aplikasi

119
00:05:00,490 --> 00:05:02,280
‫kita, logika aplikasi berfungsi

120
00:05:02,280 --> 00:05:04,980
‫sebagai jembatan antara model dan lapisan tampilan

121
00:05:04,980 --> 00:05:06,893
‫sehingga kita tidak pernah mencampur

122
00:05:06,893 --> 00:05:08,920
‫logika bisnis dengan logika presentasi.

123
00:05:08,920 --> 00:05:10,120
‫Baiklah?

124
00:05:10,120 --> 00:05:12,000
‫Sekarang, tentang logika

125
00:05:12,000 --> 00:05:15,370
‫bisnis, semua kode yang benar-benar memecahkan masalah

126
00:05:15,370 --> 00:05:17,490
‫bisnis yang ingin kita pecahkan.

127
00:05:17,490 --> 00:05:21,340
‫Katakanlah lagi, bahwa tujuan kami adalah menunjukkan tur kepada pelanggan

128
00:05:21,340 --> 00:05:22,920
‫dan kemudian menjualnya.

129
00:05:22,920 --> 00:05:26,491
‫Dan kode yang berhubungan langsung dengan aturan bisnis,

130
00:05:26,491 --> 00:05:28,210
‫cara kerja bisnis,

131
00:05:28,210 --> 00:05:31,440
‫dan kebutuhan bisnis, adalah logika bisnis.

132
00:05:31,440 --> 00:05:34,580
‫Sekarang jika itu masih terdengar agak terlalu

133
00:05:34,580 --> 00:05:37,810
‫filosofis, beberapa contoh dalam konteks aplikasi terbaru

134
00:05:37,810 --> 00:05:41,160
‫kami adalah membuat tur baru di database aplikasi,

135
00:05:41,160 --> 00:05:45,270
‫memeriksa apakah kata sandi pengguna sudah benar saat dia masuk,

136
00:05:45,270 --> 00:05:47,320
‫memvalidasi data input pengguna, atau

137
00:05:47,320 --> 00:05:50,860
‫memastikan bahwa hanya pengguna yang membeli tur tertentu

138
00:05:50,860 --> 00:05:52,220
‫dapat meninjaunya.

139
00:05:52,220 --> 00:05:55,490
‫Jadi semua hal ini berkaitan dengan bisnis itu sendiri,

140
00:05:55,490 --> 00:05:58,200
‫dan itu adalah bagian dari logika bisnis.

141
00:05:58,200 --> 00:06:00,090
‫Sekarang, kita perlu mengingat

142
00:06:00,090 --> 00:06:02,320
‫bahwa logika aplikasi dan logika

143
00:06:02,320 --> 00:06:05,480
‫bisnis hampir tidak mungkin untuk dipisahkan sepenuhnya, sehingga

144
00:06:05,480 --> 00:06:07,670
‫terkadang keduanya akan tumpang tindih.

145
00:06:07,670 --> 00:06:09,360
‫Tetapi kami harus melakukan

146
00:06:09,360 --> 00:06:12,200
‫upaya terbaik kami untuk menjaga logika aplikasi

147
00:06:12,200 --> 00:06:15,440
‫di pengontrol kami dan logika bisnis di model kami.

148
00:06:15,440 --> 00:06:17,260
‫Dan bahkan ada filosofi

149
00:06:17,260 --> 00:06:19,400
‫model gemuk, pengontrol tipis, yang

150
00:06:19,400 --> 00:06:21,170
‫mengatakan bahwa kita

151
00:06:21,170 --> 00:06:24,140
‫harus memasukkan logika sebanyak mungkin ke dalam

152
00:06:24,140 --> 00:06:28,180
‫model, untuk menjaga pengontrol tetap sederhana dan ramping mungkin.

153
00:06:28,180 --> 00:06:31,450
‫Jadi model gemuk akan memiliki logika bisnis

154
00:06:31,450 --> 00:06:33,210
‫sebanyak yang dapat kita

155
00:06:33,210 --> 00:06:36,700
‫bongkar, dan pengontrol tipis akan memiliki logika sesedikit

156
00:06:36,700 --> 00:06:38,210
‫mungkin, sehingga pengontrol

157
00:06:38,210 --> 00:06:41,410
‫benar-benar sebagian besar untuk mengelola permintaan dan

158
00:06:41,410 --> 00:06:42,500
‫tanggapan aplikasi.

159
00:06:42,500 --> 00:06:43,440
‫Oke?

160
00:06:43,440 --> 00:06:46,060
‫Jadi, sekarang ingat semua ini

161
00:06:46,060 --> 00:06:49,193
‫saat kami melanjutkan dan membuat aplikasi kami.

