경험 기반 솔직한 접근
Linux 기반 서버 소프트웨어를 개발할 때 가장 먼저 고려하는 건 CPU 아키텍처와 커널 버전 호환성입니다. 타겟 서버의 아키텍처(x86-64, ARM 등)와 배포판 커널 버전에 따라 사용 가능한 syscall과 기능이 달라집니다. 빌드 환경과 타겟 실행 환경을 일치시키거나 크로스 컴파일을 명시적으로 설정하는 것이 기본입니다. 또 시스템 리소스—CPU, 메모리, I/O—의 사용 패턴을 고려해 스케줄링 정책이나 스레드 모델을 선택합니다. 고성능 서버 소프트웨어에서는 epoll 기반 이벤트 처리나 lockless 자료구조가 중요한 선택 요소입니다. 학습 과정에서 프로파일링과 벤치마킹을 통해 병목을 확인하고 최적화하는 순서를 배웠습니다.