🔔[항해99] 66

[항해플러스 백엔드후기] 10주차 최종 회고 - 또다른 항해의 시작

[개요]어느새 10주 라는 시간이 지나고 마지막 챕터인 장애대응까지 왔다10주라는 시간이 마냥 쉽고 짧은 시간이라고는 할 순 없지만 그동안의 치열하게 노력했던 나의 시간과 쌓게된 경험에 비하면 짧은 시간이라고 느껴진다  [과제]10주차의 과제는 다음과 같았다 - 부하 테스트 대상 선정 및 목적, 시나리오 등의 계획을 세우고 이를 문서로 작성 및 적합한 테스트 스크립트를 작성하고 수행- 위 테스트를 진행하며 획득한 다양한 성능 지표를 분석 및 시스템 내의 병목을 탐색 및 개선해보고 (가상) 장애 대응 문서를 작성하고 제출 개발은 만들어 놓고 끝이 아니다어떻게 유지보수 하고 운영을 하는지가 더 중요하다 이번 주차는 이를 위한 주차로써 어떻게 장애 대응을 하고 모니터링과 여러 부하 테스트 등을 할수 ..

🔔[항해99]/WIL 2025.03.05

[항해플러스 백엔드후기] 9주차 회고 - 카프카는 신이야

[과제]9주차의 과제는 다음과 같았다   - docker 를 이용해 kafka 를 설치 및 실행하고 애플리케이션과 연결 후 카프카 consumer, producer 를 연동 및 테스트 - 카프카의 발행이 실패하는 것을 방지하기 위해 Transactional Outbox Pattern를 적용 카프카의 발행이 실패한 케이스에 대한 재처리를 구현 ( Scheduler or BatchProcess )  그동안에 숱하게 들어왔던.. 카프카는 신이야 ! 에서 드디어 카프카를 연동해보고 구현해보는 주차가 다가왔다사실은 실무에서도 카프카를 사용하고 있지만 내가 직접 연동해보고 어떠한 전략을 사용할지는 고민해본적은 없어서 기초적인 개념은 이해하고 있지만 제대로 실습을 해본다는 느낌으로 과제를 진행했다[과제 해결 과정..

🔔[항해99]/WIL 2025.02.24

[항해플러스 백엔드후기] 8주차 회고 - 쿼리튜닝 - ("적절한" + 인덱스) = 0

[개요]어느새 8주차도 무사히 지나갔다 !!처음 시작했을 때는 언제 10주를 다하나.. 어떻게 버틸까 아찔했는데 이제는 벌써 수료식이 코앞이라는 생각에 싱숭생숭하다 [과제]8주차의 과제는 다음과 같았다 - 나의 시나리오에서 수행하는 쿼리들을 수집해보고, 필요하다고 판단되는 인덱스를 추가하고 쿼리의 성능개선 정도를 작성하여 제출 - 자주 조회하는 쿼리, 복잡한 쿼리 파악 - Index 추가 전후 Explain, 실행시간 등 비교- 서비스의 규모가 확장되어 MSA의 형태로 각 도메인별로 배포단위를 분리해야한다면 그 분리에 따른 트랜잭션 처리의 한계와 해결방안에 대한 서비스 설계 문서 작성- 실시간 주문(이커머스), 좌석예약 정보(콘서트)를 데이터 플랫폼에 전달(mock API 호출)하는 요구사항 등..

🔔[항해99]/WIL 2025.02.17

[항해플러스 백엔드후기] 7주차 회고 - 오쪼쪼.. 나의 임시 보관함..캐싱

[개요]지난 주 고비를 넘고나니 상대적으로 수월해진 느낌이다여전히 하루하루 수면부족에 시달리고는 있지만, 고지가 눈앞에 보이니 해낼 수 있다라는 생각으로포기하지말기. 한주 한주 과제를 제출만 하자라는 생각으로 천천히 해내어 보기 [과제]7주차의 과제는 다음과 같았다  - 조회가 오래 걸리는 쿼리에 대한 캐싱, 혹은 Redis 를 이용한 로직 이관을 통해 성능 개선할 수 있는 로직을 분석하고 합리적인 이유와 함께 정리한 문서 제출 - 선착순 쿠폰 발급 기능에 대해 Redis 기반의 설계를 진행하고 적절하게 동작할 수 있도록 쿠폰 발급 로직 개선 이번에는 캐싱과 Redis에 대해 다루게 되었다.캐싱의 중요성에 대해서는 잘 알고 있었지만 실무에서는 사용하지 않고, Redis는 사용하지만 이미 모듈로 구현된..

🔔[항해99]/WIL 2025.02.13

[항해플러스 백엔드후기] 6주차 회고 - 하루하루가 고비

[개요]절반이 넘어가면서 앞으로가 힘들지는 않을거라는 생각은 하지 않았지만그래도 이렇게까지 일이 겹치면 힘들수 있겠구나 하고 느낄 수 있었던 한주였다[과제]6주차의 과제는 다음과 같았다 - 시나리오에서 발생할 수 있는 동시성 이슈에 대해 파악 후 가능한 동시성 제어 방식들을 도입 및 각각의 장단점을 파악 후 내용을 정리 제출 - DB Lock 을 활용한 동시성 제어 방식에서 해당 비즈니스 로직에서 적합하다고 판단하여 차용한 동시성 제어 방식을 구현하여 비즈니스 로직에 적용 통합테스트 등으로 이를 검증하는 코드 작성 및 제출 지난 주차에 이어서 좀더 다양한 동시성 제어 방식들에 대해서 배우고, 그 중에 DB 락에 좀더 초점을 맞추어서 비교하여 보고서를 작성하고 기존 로직을 개선하는 것에 초점이 맞춰졌다...

🔔[항해99]/WIL 2025.02.03

[항해플러스 백엔드후기] 5주차/챕터2 회고 - 시작이 반이다

[개요]어느덧 벌써 길고 길었던 10주의 절반이 지났다.시작이 반이라더니 멀게만 느껴졌던 절반을 넘어간다.5주차 회고 겸 챕터2 마무리 회고를 해보고자 한다  [과제]5주차의 과제는 다음과 같았다 - 비즈니스 별 발생할 수 있는 에러 코드 정의 및 관리 체계 구축- 프레임워크별 글로벌 에러 핸들러를 통해 예외 로깅 및 응답 처리 핸들러 구현- 시스템 성격에 적합하게 Filter, Interceptor 를 활용해 기능의 관점을 분리하여 개선- 모든 API 가 정상적으로 기능을 제공하도록 완성- 시나리오별 동시성 통합 테스트 작성  지난 주차에 비즈니스 로직을 추가하면서 예외 처리를 구현했지만, CustomException을 설정해 두지 않은 채로 핸들러만 구축해 두어 이번주차에 추가해 주었다.  Custo..

🔔[항해99]/WIL 2025.01.17

[항해플러스 백엔드후기] 4주차 회고 - 첫 FAIL

[개요]모두가 어렵다고 하는 .. 4주차가 시작되었다. 과제만을 위해서 휴가를 내고 하시는 분들도 있을 정도로 그만큼 빡쎄기도 하고 신경쓸것도 많다 [과제]4주차의 과제는 다음과 같았다  - 각 시나리오별 하기 비즈니스 로직 개발 및 단위 테스트 작성 - `e-commerce` : 상품 조회, 주문/결제 기능 - `concert` : 대기열 발급, 대기순번 조회, 좌석 예약 기능> 단위 테스트 는 반드시 대상 객체/기능 에 대한 의존성만 존재해야 함* 기본과제- API Swagger 기능 구현 및 캡쳐본 첨부 ( Readme )- 주요 비즈니스 로직 개발 및 단위 테스트 작성* 심화과제- 비즈니스 Usecase 개발 및 통합 테스트 작성> API 의 완성이 목표가 아닌, 기본 및 주요 기능의 ..

🔔[항해99]/WIL 2025.01.13

[항해플러스 백엔드후기] 3주차 회고 - 설계부터 갈아엎어

[개요]한 챕터를 끝내고 이제 찐? 이라는 3주차 과제가 시작되었다이번에는 3가지 시나리오 중에 하나를 선택하고 해당 시나리오에 맞춰서 각 주차별로 개발을 진행해주면 된다 3가지 시나리오는 이커머스 / 콘서트 예약 / 맛집 검색? 이었고 처음부터 대쪽같이 이커머스 쪽으로 나아가려 했던 나는 고민도 없이 이커머스로 선택했다.  [과제]3주차의 과제는 설계였다1,2 주차 보다 비교적 쉬운 과제네 .. 하면서 쉽게만 생각했었는데 아니었다보통 실무에서도 기획서 기반으로 간단하게 설계를 하고 운영 정책에 따라서 세부사항을 잡아가면서 개발을 하곤했었는데 바로 문서화까지 하면서 해보려니 뭔가 고려할 점들이 계속해서 나와서 어려웠다 * 아래 시나리오 중 한 가지를 선택 1. E-커머스 서비스 2. 맛집 검색..

🔔[항해99]/WIL 2025.01.05

[항해플러스 백엔드후기] 2주차 회고 - 비관적 Lock도 락이다

[개요]어느새 폭풍같이 1주일이 지나가고 벌써 2주차가 다가왔다. 퇴근후 매일 과제를 하느라 새벽 2,3시에 자고 다시 야근하고 공부하는 일주일이었다.. 이렇게 이제 9주만 더하면 된다!  이번 과제가 수강신청 시스템에서 동시성 이슈를 생각해야 하는데 매번 티켓팅하면서 동시성때문에... 이선좌 화면을 봤던 기억이 떠올랐다.. 이번 과제와 비슷하게 DB 락을 걸어서 해당 좌석 자체를 락을 걸어버렸기에 내가 그 콘서트를 못갔던 거겠지..[과제]2주차의 과제는 이러했다. * 기본기능- 아키텍처 준수를 위한 애플리케이션 패키지 설계- 특강 도메인 테이블 설계 (ERD) 및 목록/신청 등 기본 기능 구현- 각 기능에 대한 **단위 테스트** 작성* STEP 3- 설계한 테이블에 대한 **ERD** 및 이유를 설명..

🔔[항해99]/WIL 2024.12.28

[항해플러스 백엔드후기] 1주차 회고 - 동시에요? 갑자기요?

[개요] 2년전 여름, 개발자라는 직업에 대한 열정으로 5년간 일해오던 직장에서 퇴사를하고 비전공자들도 개발자가 될 수 있다는 여러 부트 캠프들을 알아보다가 항해99에서 운영하는 이노베이션 캠프에 참여하였다. 그냥 부트캠프여서 참여했다기 보다는, 일단 사전 과제를 내어 주고는, 해당 과제를 통과한 사람들에게 수강할 수 있는 기회를 준다는 점과 내가 몰입할 시간을 99일 준다는 점이 깔끔해서 마음에 들었다.  그렇게 새벽까지 (거의 울면서) 몰입하던 99일이 지나고, 그 이전에는 상상도 해보지도 못했던 개발자라는 직업을 가지게 되었다 어느덧  2년이라는 시간이 흐르고 백엔드 개발자로서 더 나은 역량 강화와 더 나은 개발자 공부라는 것은 무엇일까라는 고민이 쌓여가던 차에 항해99에서 이번에는 재직자를 대상..

🔔[항해99]/WIL 2024.12.21

22.11.07 (월) 99일 차 - 이노베이션 캠프 회고

길고 길었던 99일이 비로소 끝났다. 사실은 이미 지난주 금요일에 수료식을 모두 끝냈지만 99일에 딱 맞추어서 회고를 하고 싶었다. 퇴사를 하고 벌써 3달이 지난 것이다. 그 3달동안에 나는 아무것도 모르던 문외한에서 이제 스스로 프로젝트를 설계하고 코드를 짜고 디버깅을 하고 서버를 배포할 수 있게 되었다. 정말 이 모든 게 .. 신기하다. 정말 하면 되는 구나 싶은 마음과 이제 기초는 다졌으니 더 제대로 공부해야한다는 부담감이 같이 생긴다. 본래 걱정이 많은 성격이긴 하지만 캠프를 하는 동안에는 매주 새로운 과제에 직면해야했고 미래를 걱정할 틈새가 없었다. 당장에 눈 앞에 있는 과제를 끝내기에 급급했으니까.. 그래서 조금은 쉬고 싶은 마음에 빨리 캠프가 끝나길 바라곤 했었는데.. 막상 또 다 끝내고 나..

🔔[항해99]/TIL 2022.11.07

22.10.22 (토) 83일 차

오늘 한 것 2022.09.07 - [🌿SPRING/🍀공부 [SPRING]] - [SPRING] Frontend와 협업 ! - CORS 원리 / 설정 (22.10.22 수정) 2022.10.23 - [🚨에러노트] - [Solved][Ubuntu] ubuntu reboot 후 port connection error 소켓만 없으면 될 거야... 하던 기대는 무너지고 메모리 사용량을 62%로 유지했는데도 OOM 에러가 났다. Java Heap Memory 공간은 다르겠지 으이구! 힙덤프 파일을 저장하는 경로를 다르게 해두어서 그런지 이번 에러는 힙덤프 파일이 쌓이지 않았다. 일단 다시 뻗을때까지 기다려 본다... ㅎㅎ

🔔[항해99]/TIL 2022.10.23

22.10.21 (금) 82일 차

오늘 한 것 서버 안정화 .. 를 위한 분석 툴 사용하기 => 에러가 안났으면 좋겠다.. 원인이 뭘까? 미뤄둔 에러들 하나씩 정리하기 최종 프로젝트 런칭 ! https://www.earthus.net/ Earth, us 제로웨이스트 커뮤니티 www.earthus.net 오늘 배운 것 Heap Dump file 추출하여 분석하기 => 추후 방안 생각하기 2022.10.22 - [🚨에러노트] - [Solved][Spring]the authorization header is malformed; the authorization component "..."is malformed 2022.10.22 - [🚨에러노트] - [Solved][Ubuntu] ERROR c.i.b.d.M.service.Service.'.....

🔔[항해99]/TIL 2022.10.22

22.10.19 (목) 80일 차

오늘 한 것 [팀] 검색기능 배포서버 에러 ^^ 오늘은 오랜만에 오전 내내 서버가 말썽을 부리지 않았다.. 간만에 평온하게 내가 맡은 기능을 개발하려고 했는데 서버가 갑자기 멈췄다... 아니 에러가 ... java.lang.OutOfMemoryError: Java heap space ㅎㅎㅎㅎㅎ 일단은 가상메모리를 할당해주면 된다고 해서 해주고 재부팅을 하고 다시 서버를 돌리니 되었다. 근데 로그인이 안되네...? 이제서야 원인을 알겠지만 그때는 또 무언가 잘못된 줄 알았다.. (최신 jar 파일을 구동시킨게 아닌 예전거를 수동 배포해서 생긴 문제였다) 일단 다들 로그인 해결하는 동안에 검색기능을 구현했고 자동배포 하고나니 로그인이 되었다. (당연히..최신 jar니까...ㅠㅠㅠㅠ 왜 그때는 생각지도 못했을..

🔔[항해99]/TIL 2022.10.20

22.10.18 (화) 79일 차

오늘 한 것 에러의 늪 서버를 배포한다는 것은 너무 큰일 이었다. 이때까지 일주일씩하던 미니 프로젝트들은 솔직히 되어도 그만, 안되어도 그만인 그저 연습용 발표용 자료였기 때문에 한번만 이라도 잘되면 장땡이었다. 그러나 지금은 서비스 런칭을 위해서 하는 것이어서 좀더 신경 쓸게 많았다. 일단은 기존에 그냥 http로 배포하던걸 https 로 인증서를 받아 좀더 신뢰성있는 사이트로 배포 ci/cd자동화 (무중단 배포는 자신이 없다..) properties 암호화 지난 주 목요일부터 현재까지 배포에만 신경을 쓰고 있는데 목요일 인스턴스 생성 깃허브 액션 설정 금요일 RDS 버그 픽스 ✔ 자고일어나니 안되는 깃허브액션 에러 픽스 ✔ 토요일 배포하고나니 프론트와 CORS에러.. 밤샘 일요일 CORS에러... 결..

🔔[항해99]/TIL 2022.10.19