해결된 질문
작성
·
18
0
학습 관련 질문을 최대한 상세히 남겨주세요!
고민 과정도 같이 나열해주셔도 좋습니다.
먼저 유사한 질문이 있었는지 검색해보세요.
인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
강사님, 최적화를 진행할 때 보통 어떤 순서로 고민하시나요?
예를 들어 트래픽이 몰릴 때 먼저 어디를 확인하고, 어떤 기준으로 개선 방향을 정하시는지가 궁금합니다.
답변 2
0
민서님, 안녕하세요!
간단히 답변 드릴 수 있는 내용은 아니군요!
결국 복합적으로 다 보면서 고민하는데요, 간단히 말씀 드려보겠습니다.
최적화 고민 순서에 대해서는, 일단 가장 쉽게 대응할 수 있는 방법을 먼저 고민해 봅니다.
여기에서 쉽다라는건 개발 자체의 어려움을 말하는 것은 아닙니다.
변경의 범위가 크지 않고, 부하를 크게 늘리지 않고, 실제로 돈이 더 들어가지 않는 방향 등을 말합니다.
단순히 설정 값을 바꾼다든가, 이미 운영중인 캐시 시스템이 있었다면 붙인다든가, 애플리케이션 코드가 비효율적인 부분이 있으면 개선한다든가 등이 있겠네요.
위처럼 처리가 어려울 때의 다른(복잡한) 방안을 고민해보게 되는데요,
코드의 큰 작업 단위, 인덱스 추가, 서버 증설, 개발이 정말 많이 어려운 경우 등이 있겠네요.
트래픽이 몰리면, 일단 저는 개발자 입장이므로 애플리케이션 서버/연동중인 플랫폼들(DB/카프카/캐시 시스템/외부 연동 서버 등)의 지표들을 확인해보고, 트래픽이 얼마나 증가했고 아직까지 감당 가능한 상황인지 등 점검해보는 것 같네요.
개선 방향을 정하는 것은 문제 상황마다 모두 다를 것 같습니다.
DB 질의가 느리다? -> 인덱스나 쿼리를 재점검
DB 부하가 크다? -> 캐시 적용 또는 DB 분리
응답이 느리다? -> 연결되는 흐름 모두 파악 후 병목 지점 파악하여 개선
연결이 안된다? -> 애플리케이션이 죽었는지, 서버가 죽었는지, 네트워크 문제인지, 장비 문제인지, 설정 문제인지, 코드 문제인지 모두 점검
이처럼 원인도 하나가 아닌 여러 개 일 수 있고, 확인하다보면 모든걸 다 봐야할 때도 있어서 정확한 기준은 없는 것 같네요.
보통 전 초기 개발 단계부터 현재 할당된 리소스 범위 내에서는 최적화가 이미 되어 있는 방향으로 설계를 진행하고,
이후에 놓쳐진 부분은 운영하면서 지속 모니터링 및 개선하게 되는 것 같습니다.
간단히 답변 드릴 수 있는 부분은 아니라 만족스러운 답변이 되었을지 모르겠네요, 혹시 더 궁금한 점 있으시면 편히 남겨주세요!
0
안녕하세요, 인프런 AI 인턴입니다. 전민서님.
트래픽 최적화는 시스템의 성능을 개선하기 위한 중요한 과정입니다. 일반적으로 최적화 순서는 다음과 같습니다:
병목 식별: 우선적인 목표는 어디에서 문제(병목)가 발생하는지를 파악하는 것입니다. 이를 위해서는 로깅과 모니터링이 필수적입니다. APM(Application Performance Monitoring) 툴을 사용하여 어디에서 지연이 발생하는지, 트랜잭션이 어디에서 많이 소비되는지를 파악합니다.
데이터베이스 최적화: 많은 트래픽 문제는 데이터베이스 쿼리에서 발생합니다. 인덱스를 추가하거나 쿼리를 최적화하며, 필요하다면 데이터베이스 구조를 재설계합니다. 쿼리 캐싱이나 데이터베이스 복제(리플리케이션)를 통해 읽기 성능을 개선할 수 있습니다.
캐싱 레이어 강화: Redis나 Memcached와 같은 캐시 시스템을 도입하여 데이터베이스나 API 호출로 가는 부하를 줄입니다. 특히 자주 변경되지 않는 데이터에 대해서는 캐싱이 효과적입니다.
애플리케이션 레이어 최적화: 코드 레벨에서의 최적화는 불필요한 메서드 호출을 줄이고, 코드 복잡도를 최소화하여 성능을 향상시킵니다. 비동기 처리와 병렬 프로세스를 도입하면 처리 속도를 높일 수 있습니다.
하드웨어 확장: 마지막으로, 소프트웨어적으로 해결할 수 없는 경우 시스템 리소스를 확장하여 더 많은 하드웨어 리소스를 할당함으로써 성능을 개선할 수 있습니다.
각 단계에서 성능 개선의 우선순위를 정하고, 비용과 효과를 고려하여 가장 적합한 방안을 적용하는 것이 중요합니다.
유사한 질문으로는 “무한 스크롤 질문있습니다” 과 같은 최적화 면에서의 고민이 담긴 질문을 참고하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.