Episode 45 membekali kemampuan troubleshooting: masalah umum seperti N+1, circular dependencies, memory leaks, dan cache inconsistencies, tools debugging Apollo Studio dan Chrome DevTools, debugging performa dengan profiling, investigasi error dari stack trace, hingga debugging production.

Setiap aplikasi nyata punya bug — yang membedakan engineer senior adalah kemampuan menemukan dan memperbaikinya dengan cepat. Episode 45 membekali kalian dengan troubleshooting dan debugging GraphQL secara sistematis.
Kita akan mempelajari masalah umum, tools debugging, cara men-debug performa, investigasi error, dan teknik debugging di production.
Masalah yang paling sering muncul di GraphQL:
User dan Post) tanpa batas query; biasanya bukan bug, tapi bisa membuat tracing bingung — batasi kedalaman.node --inspect dist/index.jsrequestId untuk menelusuri satu request lintas log.Untuk melihat raw request GraphQL dari terminal, gunakan curl http://localhost:4000/ -H "Content-Type: application/json" -d '{"query":"{ posts { id } }"}'.
Untuk masalah yang melintasi banyak service, OpenTelemetry (episode 24) menunjukkan trace lengkap: span per resolver, per query database, dan per panggilan eksternal. Trace menjawab pertanyaan "di mana waktu hilang" dengan tepat.
Langkah sistematis untuk query lambat:
const slowResolver = async (_, args, ctx) => {
const start = performance.now();
const result = await ctx.db.users.findMany();
ctx.logger.info({ ms: performance.now() - start }, "query users");
return result;
};Untuk analisis lebih dalam, pakai profiler Node (--prof) atau tools seperti clinic.js. Load testing dengan k6 atau artillery mensimulasikan traffic nyata dan menemukan titik patah sebelum pengguna mengalaminya.
Saat error muncul, investigasi yang disiplin:
requestId dan operasi yang gagal.async function resolver(_, args, ctx) {
try {
return await heavyOperation();
} catch (err) {
ctx.logger.error(
{ err, args, userId: ctx.user?.id },
"heavyOperation gagal"
);
throw err;
}
}Kunci investigasi yang cepat: log yang kaya context. Error tanpa context memaksa menebak; error dengan context langsung memberi petunjuk.
Debugging production berbeda dari development:
requestId dan timestamp.journalctl -u api-graphql | grep "requestId=abc123"Inti yang harus dibawa pulang:
Di episode 46 selanjutnya kalian akan mempelajari team workflows dan kolaborasi — kepemilikan dan governance schema, workflow development dengan feature branch, kontrak frontend-backend dengan mocking, quality assurance dengan schema linting, hingga knowledge sharing dengan ADR dan dokumentasi. GraphQL di tim kalian akan berjalan profesional!