전체 글 (172) 썸네일형 리스트형 IntelliJ Compound 기능으로 여러 프로젝트를 한 번에 실행시키기 개요회사 코드는 여러 프로젝트로 이루어져 있다. 하나의 로컬에서 API를 호출하기 위해 관련된 프로젝트를 전체 실행을 시켜야만 했다. 이걸 계속 하다보니 불편함이 너무 많았다. 관련 프로젝트를 하나하나 Gradle에서 실행을 시켜야 하는 번거로움이 있었기 때문이다. 편하게 해줄 수 있는 관련 기능이 있는지 확인했고, IntelliJ에서 여러 프로젝트를 한 번에 실행시켜줄 수 있는 Compound라는 기능을 제공해준다는 것을 알았다.Compound에 여러 프로젝트 설정하기"Run - Edit Configuration - Compound" 에서 설정을 할 수 있었다. 새로운 Compound를 생성하고 실행시키고자 하는 프로젝트들을 담으면 되었다. 추가적으로 각 프로젝트는 실행이 되어야하는 포트가 달랐기 .. 기존 API 응답 형식 변경할 때 주의점 기존 API 대체 문제사이드 프로젝트를 하면서 기존 API의 응답 구조가 변경이 되는 상황이 발생했다. API의 경로를 유지하기 위해 기존 API를 변경하는 방향으로 작업이 진행이 되었다. 작업을 완료하고 배포를 하고 나니 응답 값의 구조 변경으로 API와 관련된 앱의 기능들이 동작하지 않게 되었다.API 대체 방안사이드 프로젝트를 같이하는 선배 개발자 분이 기존 API의 변경으로 운영 환경에 영향을 줄 수 있다면 새로운 API를 만들어야 한다고 조언을 해주었다. 함께 일하는 백엔드 분들과 논의를 해서 API에 버전을 붙이기로 이야기를 했다. 기존 API@GetMapping(value="/hero")public HeroResponse getHero(){}추가 API@GetMapping(value="/v2.. 개발 장애 대응에 대한 절차 개요 사이드 프로젝트 인생퍼즐 개발을 진행하면서, 이번에 몇몇 버그를 마주하게 되었다. 이번에 발생한 버그들은 배포된 앱이 정상적으로 동작하지 않도록 만든 케이스였다. 프리티어 만료로 인하여 AWS에 구성해둔 서버를 옮기게 되었는데, 이 때도 서버 이전 도중 문제가 발생하여 배포된 앱이 API를 호출하는 데에 문제가 발생해 앱 동작이 멈추었다. 이런 과정을 겪고나니, 장애가 발생했을 때 어떻게 대응하는 것이지 알아보고 사이드 프로젝트에 적용할 수 있는 것은 해보기로 했다. 장애란? 장애는 일시적으로나 영구적으로 시스템, 서비스, 또는 기능이 제대로 작동하지 않는 상황으로 기술적인 결함으로 하드웨어 또는 소프트웨어의 오류, 인프라, 네트워크, 보안 문제 등 다양한 요인에 의해 발생한다. 장애 대응 절차가 .. JavaSpring @RequestHeader 사용시 주의점 문제 사항 프로젝트에서 요청받은 전체 Header 정보가 필요했다. JavaSpring에서 지원해 주는 @RequestHeader를 통해 전체 Header 정보를 HashMap에 담아 사용을 했다. 로컬 서버를 돌려 기능 테스트 해보니 정상적으로 HashMap에서 Header 정보를 가져오지 못하고 있었다. ✔ 이유 Header의 key값이 잘못 되었던 것이었다. AWS CF에서 전달해 주는 Header를 명세를 확인하고 정확히 입력을 했는데도 불구하고 실제 출력해 보니 대문자, 소문자 차이가 있었던 것이다. ✔ HttpServletRequest.getHeader는 정상적으로 돌아갔던 이유 그동안 사용했던 HttpServletRequest.getHeader는 대소문자 구분 없이 정상적으로 돌아갔다. 그.. AWS API 사용에 있어 요청 할당량 고려하기 App Notification Push를 위한 자체 유틸 함수 사용 💬 이번에 회사에서 별도의 push 서버를 만들기로 했다. 이를 위해 기존 push를 날리는 함수에 대해 성능 테스트를 하기로 했다. 테스트 결과를 통해 push 서버를 만드는 과정에서 고려해야 할 사항들을 체크하기로 했다. ✔ 테스트 진행 💬 1만 유저에게 push를 보내는 테스트를 했는데, 소요되는 시간이 10분이 넘어갔다. 시간을 줄이기 위해 Thread 10, 20개로 늘려가며 추가적인 테스트를 했다. 그랬더니 throttling 예외가 발생을 했다. 초당 처리량이 200~300건 밖에 안되었는데 기존 함수에서 사용하고 있는 AWS SNS API에서 성능 제한을 위해 throttling이 발생한 것이다. ✔ 원인 파악 💬 AWS .. Java에서 AWS SDK를 사용할 때 발생하는 Warning & Error 로그 제거 AWS SDK 2 Version을 적용했을 때 발생한 Warning & Error 💬 Java Spring Project에 AWS S3 사용을 위하여 의존성을 추가하여 사용하였다. 그 이후부터 아래와 같은 Warning과 Error가 발생하기 시작하였다. 서버를 가동하는 데에는 문제가 없어서 그동안 놔두었는데, 유의미하지 않은 Warning과 Error의 메시지가 계속해서 뜬다면 실제 중요한 로그를 놓칠 수 있다고 판단이 되어 이번 기회에 해결하기로 했다. ✔ Warning 문구 [main] WARN com.amazonaws.util.EC2MetadataUtils - Unable to retrieve the requested metadata (/latest/meta-data/instance-id). Fa.. Map vs DTO 사용 현업 코드를 작성하며 Map 사용 💬 입장 대기열을 위한 코드를 작성을 하게 되었다. 코드 작성을 하며, 요구 사항이 계속해서 변경이 되는 상황이었다. 그러다보니 User 데이터에 저장이 되어야 하는 값들이 계속해서 변경이 되었다. 유연하게 데이터가 변경이 되더라도 대응 가능한 Map을 사용하기로 했다. ✔ Map을 사용하며 느낀 장단점 💬 Map을 사용을 하다보니 계속 변경이 되는 저장 값들을 쉽게 대응할 수 있었다. 처음에는 빠르게 작업을 진행하는 데에 많은 도움이 되었다. 그런데 코드가 늘어나고 대기열 User 데이터가 사용되는 곳이 많아지자 오히려 작업 속도가 현저히 줄어들게 되었다. User 데이터를 가져다가 사용하기 위해 들어있는 Key 값을 기억하고 있어야 했으며, 상황에 따라 뭐가 들어있었.. 2023년을 돌아보며... 재취업을 위한 노력 ✔ 6개월간 취업 도전 사이드 프로젝트를 하면서 이력서를 작성했다. 작성이 완료된 이력서로 7~80군데를 넣었지만 좋은 소식은 얻을 수 없었다. 몇 군데를 커피챗과 면접을 보긴 했지만 공고와 달리 실제로 사용하는 기술 스택이 다르거나 비전이 보이지 않아 포기를 하게 되었다. 첫 취업 때 경험을 통해 신중하게 내가 성장할 수 있는 회사를 고르기 위해서였다. ✔ 항해 99 진행 이후 더 이력서를 제출했지만 서류부터 통과가 되지 않았다. 관련된 사이드 프로젝트가 하나뿐이고 내가 가진 역량을 보여줄 수 있는 자료들이 부족했기 때문이라는 생각을 하게 되었다. 혼자 준비할 수 있으면 좋겠지만, 내 성격상 상황이 주어져야 더 잘할 수 있기 때문에 기간이 짧은 부트캠프를 알아보게 되었다. 항해 9.. 이전 1 2 3 4 5 6 ··· 22 다음