🧠 1. Developer Console 구조와 동작 원리
Developer Console은 Salesforce Org의 브라우저 내장 IDE입니다. 다음과 같은 방식으로 동작합니다:
- Apex 코드 저장 시 → Metadata API 호출을 통해 서버에 저장
- Execute Anonymous 실행 시 → Salesforce 서버에서 Apex를 컴파일 후 동기 실행
- 디버그 로그 → Debug Log Queue에서 사용자 기준으로 수집 및 스트리밍
- 모든 작업은 브라우저 → Lightning Platform API → Org 내부 엔진으로 연결
📌 결론: 클라이언트 없이 UI 상에서 Salesforce 내부 엔진과 직접 통신함
🧱 2. UI 구조 설명
| 영역 | 설명 |
|---|
| Code Editor | Apex 코드 파일 열기/수정 |
| Logs | 디버그 로그 탭 |
| Test Classes | 테스트 클래스 목록 및 실행 |
| Query Editor | SOQL/SOSL 실행 |
| Problems / Checkpoints | 코드 오류 목록 및 중단점 디버깅 설정 |
📂 3. 지원하는 파일/타입
| 타입 | 가능 여부 |
|---|
| Apex Class | ✅ |
| Apex Trigger | ✅ |
| Visualforce Page/Component | ✅ |
| LWC | ❌ |
| Static Resource / Metadata 편집 | ❌ |
| SOQL/SOSL | ✅ |
| Aura Component | ❌ (단, Apex 쪽 디버깅은 가능) |
🧰 4. 기능 정리 (포괄적으로)
| 기능 | 설명 |
|---|
| Apex 클래스/트리거 생성/편집 | File > New |
| Execute Anonymous | Apex 코드 임시 실행 (System.debug, DML 등) |
| Test 실행 및 커버리지 확인 | 클래스 선택 후 Test > Run |
| SOQL 실행 | Query Editor 탭 |
| 디버그 로그 보기 | 로그 자동 수집 및 Execution Tree 시각화 |
| 로그 레벨 조절 | Debug > Change Log Levels |
| 코드 북마크 및 서치 | 단축키 지원 (Ctrl + F, Ctrl + G) |
| Breakpoint 설정 (Checkpoint) | 코드 중단점 설정해 런타임 상태 확인 |
📄 5. 로그 시스템 (내부 작동 방식)
- 로그는 디버깅 레벨에 따라 출력되는 양이 다름
- 사용자는 디버그 로그 설정 페이지에서 자신 및 트리거 사용자 추가 가능
- 로그는 기본적으로 7일 동안 보관되며, 용량 제한 있음 (로그 초과 시 오래된 로그 삭제됨)
🧪 6. 테스트 실행 기능 상세
- 단일 테스트, 전체 테스트 실행 가능
- 커버리지 시각화 지원 (클래스 내 라인별 커버리지 표시)
@isTest 어노테이션 클래스 자동 인식
- 테스트 실패 시 상세 스택 트레이스 표시
- 비동기 Apex (Queueable, Batch 등) 테스트는 간접 실행 필요
🔐 7. 권한과 보안
| 보안 요소 | 설명 |
|---|
| 로그인된 사용자 권한에 따라 기능 제한 | ex. Apex 작성 권한 없는 사용자에겐 콘솔 접근 불가 |
| Apex 테스트 실행은 그 사용자의 권한 기준 | RunAs 테스트는 System.runAs() 필요 |
| 디버깅 로그는 자신 또는 설정된 사용자만 확인 가능 | |
❗ 8. 자주 발생하는 문제와 해결법
| 문제 | 해결 방법 |
|---|
| 로그 안 보임 | Debug 로그 설정에 사용자 등록했는지 확인 |
| 콘솔 멈춤/느림 | 로그 크기 너무 크면 브라우저 다운될 수 있음 → 필터 조정 |
| 커버리지 표시 안됨 | 테스트 성공했는지, 클래스와 테스트가 연결되었는지 확인 |
| 코드 저장 안됨 | 메타데이터 충돌, 컴파일 오류 확인 (서버 로그) |
⚙️ 9. 실전 활용 팁
- 빠른 테스트: Execute Anonymous로 간단한 데이터 삽입/삭제/쿼리 실행 테스트
- 로그 필터링: 필요한 항목만 설정 (Apex_Code, Database 등) → 성능 향상
- 오류 재현: 사용자 impersonation 대신
System.runAs() 사용
- 다중 로그 보기: 각 탭마다 로그 저장 가능 → 복수 사용자 분석 가능
- 중단점 활용 (Checkpoint): 변수 상태 추적, Object Tree 분석에 유용
✅ 10. 장점 정리
- 설치 필요 없음
- 웹 기반으로 접근성 최고
- Apex 테스트/로그 분석에 최적화
- 초기 학습자에게 매우 직관적
❌ 11. 단점 정리
| 단점 | 이유 |
|---|
| 느릴 수 있음 | 브라우저 기반 + 로그 크기 영향 큼 |
| Git 연동 불가 | 코드 버전 관리 어려움 |
| 복잡한 프로젝트에 비효율 | 코드 탐색, 모듈 구조화 불편 |
| HTML, JS, CSS 등 프론트엔드 불가 | LWC 개발 지원 안 됨 |
| 고급 플러그인, 확장성 부족 | VS Code 대비 기능 제한 많음 |
📌 12. 언제 쓰면 좋은가?
| 상황 | 추천 여부 |
|---|
| 급하게 Apex 한 줄 테스트 | ✅ 강추 |
| 단위 테스트 빠르게 실행 | ✅ 적합 |
| 대규모 프로젝트 관리 | ❌ 부적합 |
| LWC 개발 | ❌ 불가능 |
| 로그 분석 | ✅ 탁월함 |