배우는 즐거움/Java
패턴을 조합하여 코드를 줄이고 가독성을 개선하자!
패턴을 조합하여 코드를 줄이고 가독성을 개선하자!
2024.07.08중복되는 코드를 줄이고 가독성을 개선하자서버를 개발하면서 인트라넷 관련 정보를 호출하거나 데이터를 요청하고 처리하는 과정에서 비슷한코드들이 반복되는 경우가 많았습니다. 이러한 문제를 조금 해결해보기 위해 다양한 패턴을 적용해보았습니다. strategy 패턴을 이용하여 큰 틀을 만들자public interface ParserDocument { String getURL() ; default Document getDocument() throws IOException{ Connection connection = Jsoup.connect(getURL()) .timeout(1000 * 60) .header("Accept", "*/*") .header("Content-T..
Python에서 Java로 마이그레이션하게 된 이유
Python에서 Java로 마이그레이션하게 된 이유
2024.06.23Python에서 Java로 마이그레이션하게 된 이유 최근 큰 고민거리가 하나 생겼습니다. 약 2500개의 데이터를 30분마다 갱신하고 검증하며 캐시화하는 애플리케이션을 빠르게 개발하기 위해 Python으로 만들었고, 이를 AWS Lambda에 올려 데이터를 처리하고 있었습니다.그러나 백엔드 테스트 중에 뭔가 이상한 점을 느꼈습니다. 데이터 자체는 서버에서 가공하고 캐시를 만들기 때문에 클라이언트는 큰 문제를 체감하지 않았으나, 데이터 처리 시간이 길게 소요되는 점이 이상했습니다. 얼마나 느리길래…??Python으로 작성된 코드가 느리게 동작하는 것이 언어와 알고리즘 문제인지 확인하기 위해 동일한 기능을 하는 코드를 Java로 작성하여 Lambda에 올려 테스트해보았습니다.테스트는 AWS Lambda에서 ..
잘못된 에러 핸들링과 로그에 관하여
잘못된 에러 핸들링과 로그에 관하여
2024.04.16로그레벨에 관하여 개발을 진행하다보면 로그를 테스트나 서비스 상태나 장애 파악을 위해 많이 쓰게 됩니다. 그래서 단계에 따른 레벨을 사용하게 됩니다. log4j 기준으로 RACE, DEBUG,INFO, WARN, ERROR, FATAL 으로 구분을 지어 사용합니다. ⭐ 로그레벨 정의 TRACE : 추적 레벨은 DEBUG보다 좀 더 상세한 정보를 나타낸다. DEBUG : 프로그램을 디버깅하기 위한 정보를 지정한다 INFO : 상태변경과 같은 정보성 메세지를 나타낸다. WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메세지를 나타낸다. ERROR : 요청을 처리하는 중 문제가 발생한 경우이다. FATAL : 아주 심각한 에러가 발생한 상태로 시스템적으로 심각한 문제가 발생해 어..