분류 전체보기 (137) 썸네일형 리스트형 2024년 회고 - 인생은 파도를 타고 + 해외도전 엘박스(LBOX) - 세상에 이런 일도 있구나..2023년도 회고에서 이끌던가 따르던가 떠나던가를 이야기하며 야놀자에서 엘박스로 이직을 이야기 했었습니다. 2023년 회고 - 이끌던가 따르던가 떠나던가Yanolja - 이끌던가 따르던가 떠나던가 2023년 회사에 부정적인 변화들이 많았습니다. 재택 폐지, 조직 개편, 권고 사직 그리고 희망퇴직!! 이 과정에서 회사에 대한 신뢰를 많이 잃었습니다. 그래도border-line.tistory.com 엘박스의 좋은 동료, 투명한 공유, 명확한 전략가 마음에 들었고 입사 후에는 아래의 경험들을 기대했었는데요. - 미드레벨을 넘어 시니어로서의 기여해보는 경험- AI 파이프라인에 대한 경험- 명확한 전략을 가지고 있는 비지니스를 서비스로 구현하여 고객에게 Impact.. Spring Boot 버전별 AWS Secret Manager 적용 방법 회사에서 Spring Cloud Config를 활용해서 민감정보를 관리하게 했던 것에서 AWS Secret Manager로 전환하게 되었습니다. 기존 Spring Cloud Config 서비스를 기존 조직에서 종료하기로 하면서 진행되었는데 팀 내에서 해당 전환을 주도하게 되어서 관련 가이드를 작성하게 되었는데 Spring Boot과 라이브러리 버전에 따라 다른 점들이 있습니다. 각 버전별 적용 방법을 간단히 정리해서 공유합니다. AWS Secret Manager에 암호 생성Spring Boot 2.3 이하와 Spring Boot 2.4 이상의 Secret Manager 생성 방법이 다릅니다. Spring Boot 2.3 이하일 때는 해당 버전과 호환되는 라이브러리 제약으로 Secret의 이름 앞에 /가 .. ObjectMapper의 FAIL_ON_UNKNOWN_PROPERTIES 설정 배경 - 여러 서비스 중 BFF 서비스들만 선배포회사에서 요금제 고도화 프로젝트 Live 시점에 B2B, B2C 서비스들 합쳐서 10개 정도의 서비스 배포를 진행했다.(B2B 7개, B2C 3개) B2B 서비스들은 다른 대형 프로젝트가 별도 브랜치로 진행되었다가main 브랜치로 병합되면서 배포 나가는 변경사항이 컸는데급하게 대응해주어야 하는 것이 있어 B2B 7개 서비스 중 BFF 서비스 2개만 4일 정도 먼저 운영 배포를 진행하게 되었다. 다른 서비스들 배포 없이 해당 BFF 서비스들만 먼저 배포되어도 괜찮은지 확인하기 위해stage 환경에서 다른 서비스들은 예전 버전으로 돌려두고 BFF 서비스들만 먼저 배포했다. 팀원들과 주요 화면들 이상 없는지 확인 했는데조회가 잘 되는 것들은 확인 했지만 요금제 .. [주니어분과의 대화] 나쁜 환경에 있다면 어떻게 해야 하나요 지인 분의 소개로 2년차 주니어분과 커피챗을 했다.줌으로 만나기 전부터 장문의 질문 리스트를 보내주셨던 태도와 열정이 훌륭하신 분이셨다. 커피챗의 주된 내용은 개발자로서의 커리어, 역량에 대한 이야기였는데성장하기 어려운 환경에서 어떻게 해야 할지에 대해 고민이 많으셨다. 누구나 현재 환경에 불만이 있는 것인데 불만만 이야기해서는 해결되는 것이 없으니..그러한 상황에서도 무엇을 할 수 있는지에 대한 제안을 드렸다. 그 제안들을 간단히 블로그로도 정리해본다.첫번째 제안 1 - 장기적 관점을 가지고 준비하자 (성급한 퇴사 No! No!)제프 베소즈가 한 강연에서 "아마존이 무엇인가"에 대해 답변하면서 장기적 관점에 대해 이야기 한다.이번 분기의 아마존은 3년 전에 결정이 되어 있고 지금은 3년뒤의 어느 분기를.. 카프카 이벤트를 메서드 호출로 발행하는 것에 대하여.. 문제 현상회사에서 작업을 하면서 Transaction이 없던 메서드에 기능을 추가하며원자성을 보장하기 위해 Transactional을 어노테이션을 추가했다. Transaction이 없던 곳에 적용할 때는 주의를 더 했어야 했는데..내부 메서드 호출 중 메서드 호출로 카프카 이벤트를 발행하는 곳이 있었고Transaction이 적용되면서 카프카 이벤트는 발행되었지만 아직 DB에 반영되지 않은 상태가 되었다. 이 경우 타이밍 이슈로 문제가 될 수 있는데 해당 카프카 이벤트를 받아(이 행동이 적절한지를 떠나서) 처리하는 서비스가 곧바로 API 요청을 하거나 DB 조회를 한다면(새로 만들었던 경우) 데이터가 없거나 (업데이트 하는 경우) 이전 데이터를 보게 된다. TransactionalEventListener를.. 잘 모르고 복잡한 코드 위에서 빠르게 기능 개발하기 - 수동 TDD 문서 작업(Tech Spec)은 해둔 상태에서약 3주 만에 요금제 고도화(회원등급제, 연박 할증) 기능 개발을 끝내야 하는 상황이었다. 중간에 휴일이 많아 실제 Working Day는 10일 정도였고PR을 40개 정도 만들었다. (평균 하루에 4개 PR) 익숙하지 않은 시스템과 데이터 파이프라인이라 파악하면서 작업을 하기도 해야 했고요금제간의 관계, 재고 설정 등 복잡한 로직이 있기도 하고PR 리뷰를 받고 머지가 되기 때문에 코드의 퀄리티도 챙겨야 하는 상황이라시간 내에 마무리 하기가 쉽지 않았다. 결국에는 잘 마무리 되었는데(원래도 하긴 했지만) 기능을 구현하면서일종의 나만의? 수동 TDD 패턴?이 있다는 것을 알게 되었다.수동 TDD 패턴?1. 구현해야 하는 기능과 관련된 코드를 찾아 보면서 수정 범.. 레거시를 대하는 자세 최근 2, 3주간 요금제 고도화 작업을 하면서 레거시? 시스템 위에서 작업을 해야 했습니다. 항상 레거시 속에서 작업을 해왔지만이번에는 특히 더 레거시를 어떻게 대해야 하는지, 어떻게 다루어야 하는지 많이 생각해보게 되었습니다.1. 레거시는 핑계의 대상이 아니라 고려와 관리의 대상이다.자신이 짜 놓지 않은 복잡하고 예측이 어려운 시스템은 누구나 부담스럽습니다.하지만 이것을 대하는 태도는 다를 수 있는데요. 레거시는 문제가 생겼을 때(e.g. 기한을 못맞출 때) 핑계의 대상이 되어서는 안됩니다.대신 일정과 기능에 미리 고려되고, 관리되는 대상이 되어야 합니다. 물론 예상을 해더라도 상태가 더 심각해서 기존 예상과 달라질 수 있습니다.하지만 이런한 것들을 최대한 미리 발견해서 공유해서 일정과 기능에 반영하려.. BFF 용어의 배경과 의미 확장 회사에서 BFF(라고 부르는) 서비스를 개발하고 운영했었는데 이러한 배경 떄문인지 용어 사용에 대한 질문을 받았다.현재 사용하는 형태를 BFF라고 하는 것이 적절한가였다.회사의 BFF 사용 형태 - General Purpose API??회사 시스템은 각 도메인(회원, 상품, 주문)별 마이크로 서비스로 나뉘어 있으며주요 화면 묶음 단위로 BFF(라고 부르는) 서비스가 각 도메인 서비스의 데이터를 가져와 화면에 맞게 응답하고 있다. 이렇게 된 배경은 PC, 모바일의 요구사항이 대동소이해서 굳이 플랫폼(PC, Mobile Web, App)마다 서비스가 나뉘어 있어야 할 필요가 없기 때문이다. 또 여러 화면들이 웹뷰로(앱에서도 모바일웹을 보여주는 것으로) 이루어져 있는데 이 경우에는 모바일 웹과 앱의 차이가 없.. [사소한 생각] 어떤 Nullable 어노테이션을 써야하나 배경Java 로 코드를 작성하다보면 Nullable을 잘 붙여두는 것이 매우 큰 도움이 됩니다.개발자가 직관적으로 Nullable 여부를 파악할 수 있을 뿐 아니라 IDE가 NPE 발생 가능성을 체크해주기 때문입니다. 그런데.. Nullable 어노테이션을 사용하려고 하면 여러개의 후보가 나오고그 중에서 javax.annotaion.Nullable과 org.springframework.lang.Nullable 중 어떤 것을 써야 할 지 애매합니다. 결론관련해서 결론은 javax.annotaion.Nullable은 공식 자바 표준이 아니며 java 9 이후에는 기본으로 포함되지도 않기 때문에Spring을 사용하고 있다면 org.springframework.lang.Nullable 이 조금 더 낫다는 것입니.. [React Native] GoToTop 버튼 이슈 - forwardRef 이슈 배경사이드 프로젝트 작업을 하면서 FE 시스템을 개편하였다. React Native를 사용하고 있었고 기존에 View, SafeAreaView, ScrollView를 직접 사용하고 있었는데공통화된 속성을 쉽게 적용할 수 있는 ScreenContainer, ContentContainer, ScrollContentContainer를 사용해 화면을 그리도록 수정하였다. ScreenContainer, ContentContainer, ScrollContentContainer 코드는 글 하단에 두었다.이슈 내용 문제는 ScrollContentContainer를 사용할 때 문제가 발생했다.스크롤 상황에서 화면 최상단으로 이동하는 Go To Top 버튼에서 ref를 사용하는데기존에 ScrollView로 사용하던 .. 이전 1 2 3 4 ··· 14 다음