Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Review awal #1

Open
cod3beat opened this issue Dec 28, 2022 · 25 comments
Open

Review awal #1

cod3beat opened this issue Dec 28, 2022 · 25 comments

Comments

@cod3beat
Copy link
Member

cod3beat commented Dec 28, 2022

@agissept ini adalah hasil review awalku ya:

REVIEW

  • Aplikasi perlu memastikan bahwa berkasnya adalah zip (atau archive yang boleh diproses)
  • Aplikasi perlu memastikan ukuran dari berkasnya
  • Aplikasi tidak perlu menjalankan perintah npm install. Biar dikelola oleh containernya
  • Aplikasinya tidak perlu menjalankan perintah docker. Ini karena servicenya akan berada di dalam container. Aplikasi hanya perlu menyediakan command yang bisa dieksekusi oleh containernya, misalnya npm run assistes atau semacam itu.
  • Aplikasi jangan memeriksa port yang terbuka. Kalo submission siswa tidak mengembalikan hasil yang diminta oleh aplikasi, maka anggap saja submission tsb belum setup socket di port tersebut.
  • Aplikasi menerima lokasi menulis hasil review melalui command line. Tujuannya agar lokasi penulisan ini bisa diatur oleh containernya.
  • Jadi intinya aplikasi perlu mengexpose command-command ke container, sehingga container bisa menjalankan aplikasi dengan fleksibel.
  • Jangan pasang nginx. Nanti pakai http-proxy saja yg lebih sederhana. Ini untuk mengecilkan ukuran dari imagenya.

Progresku untuk urusan containernya bisa dilihat di https://3.basecamp.com/5135326/buckets/30260627/card_tables/cards/5662164384 ya

Oh ya, pas aku baca Dockerfile yang ada di repo ini, ada perintah untuk menginstall net-tools. Itu digunakan untuk apa ya? Untuk memeriksa port ya?

@agissept
Copy link
Collaborator

agissept commented Jan 2, 2023

Aplikasi perlu memastikan bahwa berkasnya adalah zip (atau archive yang boleh diproses)

Sekarang process download dan extrack submission aku serahkan ke ansible mas @cod3beat, jadi aplikasi ini cuman jalanin folder yang sudah diextrack. Concernnya adalah supaya semua aplikasi auto review tidak perlu membuat proses yang sama seperti download dan extract. Jadi proses ini bisa di simpan di ansible kan ya?

Aplikasi perlu memastikan ukuran dari berkasnya

Ini berarti di cek sebelum menjalankan npm install ya? terus kadang ada siswa yang mengirimkan node_modules juga, jadi apakah perlu dihapus dulu node_modulesnya lalu jalankan proses pengecekan ukuran berkasnnya?

Aplikasinya tidak perlu menjalankan perintah docker. Ini karena servicenya akan berada di dalam container. Aplikasi hanya perlu menyediakan command yang bisa dieksekusi oleh containernya, misalnya npm run assistes atau semacam itu.

Jalanin command sama container caranya gimana mas? berarti perlu bikin script baru buat jalanin command-command yang ada di comtainer?

Aplikasi jangan memeriksa port yang terbuka. Kalo submission siswa tidak mengembalikan hasil yang diminta oleh aplikasi, maka anggap saja submission tsb belum setup socket di port tersebut.

Ini concernnya apa ya mas? dan cara ngecek port tersebut aktif atau engga berarti lewat response proxy ya?

Oh ya, pas aku baca Dockerfile yang ada di repo ini, ada perintah untuk menginstall net-tools. Itu digunakan untuk apa ya? Untuk memeriksa port ya?

betul mas ini buat ngecek port

@cod3beat
Copy link
Member Author

cod3beat commented Jan 2, 2023

Jalanin command sama container caranya gimana mas? berarti perlu bikin script baru buat jalanin command-command yang ada di comtainer?

Iya betul @agissept .

Tapi kalo urusan download dan pemeriksaan validitas submission (memeriksa berkas adalah zip dan ukurannya benar) diserahkan ke service luar (misalnya ansible), maka sepertinya hanya 1 script aja yang perlu disediakan, yaitu jalanin proses reviewnya.

Kalo mengirim hasil review itu dijalankan siapa @agissept ? Aku nggak menemukan proses itu ketika review kodenya kemarin.

@cod3beat
Copy link
Member Author

cod3beat commented Jan 2, 2023

Sekarang process download dan extrack submission aku serahkan ke ansible mas @cod3beat, jadi aplikasi ini cuman jalanin folder yang sudah diextrack. Concernnya adalah supaya semua aplikasi auto review tidak perlu membuat proses yang sama seperti download dan extract. Jadi proses ini bisa di simpan di ansible kan ya?

Ini bisa dibuatkan service baru aja yang bisa dijalankan via container? Karena bahaya kalo proses extract ini nggak diisolasi dari fileysystem lainnya

Ini berarti di cek sebelum menjalankan npm install ya? terus kadang ada siswa yang mengirimkan node_modules juga, jadi apakah perlu dihapus dulu node_modulesnya lalu jalankan proses pengecekan ukuran berkasnnya?

Hmm repot juga kalo begitu. wkwkw. Yang diukur sih ukurang zipnya sebenarnya.

@cod3beat
Copy link
Member Author

cod3beat commented Jan 2, 2023

Ini concernnya apa ya mas? dan cara ngecek port tersebut aktif atau engga berarti lewat response proxy ya?

untuk mengurangi apa yang harus diinstall di imagenya. Sehingga ukuran image lebih kecil, dan nggak butuh proses macam2 yang tersedia di containernya. Ini akan mengurangi ruang gerak peretas bila dia bisa jebol aplikasinya.

Utk memeriksa apakah portnya aktif ato nggak lewat http response aja (dan iya lewat proxynya)

@agissept
Copy link
Collaborator

agissept commented Jan 2, 2023

Jalanin command sama container caranya gimana mas? berarti perlu bikin script baru buat jalanin command-command yang ada di comtainer?

Iya betul @agissept .

Aku masih belum kebayang caranya buat script jalanin container. Apakah command npm install dan npm run disimpan di bash script? lalu bash scriptnya dijalankan dari Dockerfile?

Tapi kalo urusan download dan pemeriksaan validitas submission (memeriksa berkas adalah zip dan ukurannya benar) diserahkan ke service luar (misalnya ansible), maka sepertinya hanya 1 script aja yang perlu disediakan, yaitu jalanin proses reviewnya.

Kalo mengirim hasil review itu dijalankan siapa @agissept ? Aku nggak menemukan proses itu ketika review kodenya kemarin.

Kalo yang mengirim hasil review aku serahkan ke ansible mas

@agissept
Copy link
Collaborator

agissept commented Jan 2, 2023

Sekarang process download dan extrack submission aku serahkan ke ansible mas @cod3beat, jadi aplikasi ini cuman jalanin folder yang sudah diextrack. Concernnya adalah supaya semua aplikasi auto review tidak perlu membuat proses yang sama seperti download dan extract. Jadi proses ini bisa di simpan di ansible kan ya?

Ini bisa dibuatkan service baru aja yang bisa dijalankan via container? Karena bahaya kalo proses extract ini nggak diisolasi dari fileysystem lainnya

Berarti proses extractnya di dalam container ya mas?

Ini berarti di cek sebelum menjalankan npm install ya? terus kadang ada siswa yang mengirimkan node_modules juga, jadi apakah perlu dihapus dulu node_modulesnya lalu jalankan proses pengecekan ukuran berkasnnya?

Hmm repot juga kalo begitu. wkwkw. Yang diukur sih ukurang zipnya sebenarnya.

Oke noted mas

@agissept
Copy link
Collaborator

agissept commented Jan 2, 2023

Ini concernnya apa ya mas? dan cara ngecek port tersebut aktif atau engga berarti lewat response proxy ya?

untuk mengurangi apa yang harus diinstall di imagenya. Sehingga ukuran image lebih kecil, dan nggak butuh proses macam2 yang tersedia di containernya. Ini akan mengurangi ruang gerak peretas bila dia bisa jebol aplikasinya.

Utk memeriksa apakah portnya aktif ato nggak lewat http response aja (dan iya lewat proxynya)

Berari kalo response codenya 502 berarti portnya salah ya mas?

@agissept
Copy link
Collaborator

agissept commented Jan 2, 2023

Mas @cod3beat ini nanti jalan di 1 container atau 2 container?

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Aku masih belum kebayang caranya buat script jalanin container. Apakah command npm install dan npm run disimpan di bash script? lalu bash scriptnya dijalankan dari Dockerfile?

Oh, ini maksudnya kamu tinggal nyediakan npm scripts yang tinggal dieksekusi oleh containernya. Jadi nanti containernya itu tinggal jalanin perintah:

$ npm run download <link>
$ npm run extract <link>
$ npm run assistest
$ npm run xxx

Perintah di atas hanya contoh ya. Jadi semacam cli yang kamu sediakan, tapi via npm run.

Berarti proses extractnya di dalam container ya mas?

Iya @agissept , tapi ya mungkin perlu dijalankan oleh container yang berbeda. Yang fokus download submission

Berari kalo response codenya 502 berarti portnya salah ya mas?

Nah asumsinya gitu

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Mas @cod3beat ini nanti jalan di 1 container atau 2 container?

Container yang dibuat akan sesuai fungsinya. Bisa jadi ada 3 container:

  1. container untuk download dan extract submission
  2. container untuk menjalankan assistes
  3. container untuk mengexport hasil

@agissept
Copy link
Collaborator

agissept commented Jan 3, 2023

Mas @cod3beat ini nanti jalan di 1 container atau 2 container?

Container yang dibuat akan sesuai fungsinya. Bisa jadi ada 3 container:

  1. container untuk download dan extract submission
  2. container untuk menjalankan assistes
  3. container untuk mengexport hasil

Lalu di container mana aplikasi siswa dijalankan? apakah di container yang sama dengan assistest mas atau di container download dan extract submission?

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Lalu di container mana aplikasi siswa dijalankan? apakah di container yang sama dengan assistest mas atau di container download dan extract submission?

Di volume yang bisa dibaca oleh container assistest. Makanya itu kenapa containernya butuh servicenya untuk bisa menerima inputan via npm run. Sebagai contoh npm run asistest /path/to/submissions

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

oh ya @agissept , model API di atas kan melalui npm run. Tapi kalo kamu mau memodelkan via cli juga ya gpp.

Misalnya npm run assistest review /path/to/submissions. Atau npm run assistest do <param1> <param2>, dst

@agissept
Copy link
Collaborator

agissept commented Jan 3, 2023

nanti yang jalanin command docker run itu siapa mas @cod3beat ? apakah assistest atau script yang lain?

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Service di luar asistest @agissept .

@agissept
Copy link
Collaborator

agissept commented Jan 3, 2023

Service di luar asistest @agissept .

Aku masih bingung sih mas, aku kebayangnya malah gini

  • ansible mendowload submission.
  • ansible mengekstrak submission tersebut.
  • ansible menjalankan assistest dengan npm run assisstest <path_submission>
  • asisstest menjalankan container dengan perintah docker run ... <image>
    • di image ini terdapat start.sh yang menjalankan perintah npm install dan npm run start
  • assistest menjalankan postman testing menggunakan library newman
  • assistest mematikan container dengan docker kill ..
  • assistest memproses hasil testing.
  • ansible mengirimkan hasil review ke dicoding.com

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Kurang lebih seperti ini:

  • sebuah service (bisa jadi ansible bisa jadi bukan ansible) akan mengunduh submission
  • sebuah service mengekstrak submission
  • sebuah service akan menjalankan assistest via docker container. Misalnya docker run dicoding/assistest dengan beragam parameternya
    • di dalam container ini npm install dan npm run start, npm run postman, dan perintah lainnya akan dijalankan
  • sebuah service akan membaca hasil dari assistest dan mengirimkan ke dicoding.com

cc @habibimustafa ada masukan?

@agissept
Copy link
Collaborator

agissept commented Jan 3, 2023

Kurang lebih seperti ini:

  • sebuah service (bisa jadi ansible bisa jadi bukan ansible) akan mengunduh submission

  • sebuah service mengekstrak submission

  • sebuah service akan menjalankan assistest via docker container. Misalnya docker run dicoding/assistest dengan beragam parameternya

    • di dalam container ini npm install dan npm run start, npm run postman, dan perintah lainnya akan dijalankan
  • sebuah service akan membaca hasil dari assistest dan mengirimkan ke dicoding.com

cc @habibimustafa ada masukan?

Aplikasi siswanya berarti dijalankan menggunakan npm run biasa mas @cod3beat ? dan dia dijalankan dari container dicoding/assistest?

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Aplikasi siswanya berarti dijalankan menggunakan npm run biasa mas @cod3beat ? dan dia dijalankan dari container dicoding/assistest?

Iya @agissept . Kurang lebih sama seperti contoh container yang aku share di teams. Di situ ada 2 service yag berjalan:

  1. proxy
  2. web service

Jadi di 1 container akan ada beberapa service yg berjalan, salah satunya aplikasi yang dibuat siswa

@agissept
Copy link
Collaborator

agissept commented Jan 3, 2023

  • di dalam container ini npm install dan npm run start, npm run postman, dan perintah lainnya akan dijalankan

Kalo script npm install, npm run start, dan npm run postman aku masukkan ke dalam aplikasi assistest gimana mas? jadi nanti assistest cuman punya 1 runner script aja. Misalkan

"scripts": {
    "assistest": "...."
  },

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

oh ya gpp @agissept . Terserah. Pokoknya perintah2 itu bisa dijalankan oleh service lain. Selama bisa seperti itu ya beres.

@agissept
Copy link
Collaborator

agissept commented Jan 3, 2023

Aplikasi siswanya berarti dijalankan menggunakan npm run biasa mas @cod3beat ? dan dia dijalankan dari container dicoding/assistest?

Iya @agissept . Kurang lebih sama seperti contoh container yang aku share di teams. Di situ ada 2 service yag berjalan:

  1. proxy
  2. web service

Jadi di 1 container akan ada beberapa service yg berjalan, salah satunya aplikasi yang dibuat siswa

Kalo gini kayaknya engga perlu proxy di containernya, soalnya aplikasi siswa dan postman test berjalan di container yang sama

@cod3beat
Copy link
Member Author

cod3beat commented Jan 3, 2023

Kalo gini kayaknya engga perlu proxy di containernya, soalnya aplikasi siswa dan postman test berjalan di container yang sama

Iya nggak perlu @agissept .

@agissept
Copy link
Collaborator

agissept commented Jan 5, 2023

mas @cod3beat , aku udah nyediain 1 runner scrpit. Contohnya kaya gini

npm run assistest -- -s "./downloaded-submissions/0000 folder_submission" -r ./result

@cod3beat
Copy link
Member Author

ok siap @agissept

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants