[Log&Monitoring] 관측 가능성(Observability)
·
Infra/Log&Monitoring
우아한테크코스 레벨 3 팀 프로젝트 Festabook에서 학습한 내용을 정리한 글입니다. 💭 들어가며우리 서비스에서 로그와 모니터링을 추가해야 한다는 요구사항이 생겼다. 단순히 로그를 찍고, 대시보드를 구성하는 일이라고 생각하며 Grafana, Prometheus, ELK, CloudWatch, DataDog 등 도구를 조사하던 중, 근본적으로 로그와 모니터링을 왜 도입해야 하는지 의문이 들었다.이 질문의 답을 찾는 과정에서 "제어 이론의 관측 가능성(Observability)"이라는 개념을 알게 되었고, 이를 바탕으로 로그와 모니터링을 넘어서는 근본적인 개념을 정리해보고자 한다. ✅ 관측 가능성▶ 관측 가능성이란관측 가능성(Observability)이란 외부 출력만으로 시스템 내부 상태를 유추할 수..
[Development] GitHub 작업 Slack 알림 커스터마이징 도입기
·
Development
우아한테크코스 레벨 3 팀 프로젝트 Festabook에서 학습한 내용을 정리한 글입니다. 💭 들어가며정말 개선하고 싶었던 GitHub 작업 알림 커스터마이징을 진행했다. 처음엔 복잡하고 오래 걸릴 거라 생각했지만, 실제로는 비교적 간단하게 알림 프로세스를 개선할 수 있었다. 이 글은 해당 과정을 기록하고, 이를 도입하고자 하는 분들에게 도움이 되고자 작성했다. ✅ 도입 배경작업 초기에는 PR 관련 알림만 모으기 위해 별도의 Slack 채널을 만들고, GitHub에서 기본으로 제공하는 간단한 설정을 사용해 알림을 받아보았다. 하지만 실제 사용 과정에서 다음과 같은 문제들이 드러났다.위 사진처럼 정보가 과도하게 많고 난잡해서 가독성이 떨어졌고, 알림을 설정한 나조차도 내용을 파악하기 어려워 실질적으로 ..
[Development] FCM 도입기
·
Development
우아한테크코스 레벨 3 팀 프로젝트 Festabook에서 학습한 내용을 정리한 글입니다. 💭 들어가며이번 프로젝트에서 FCM(Firebase Cloud Messaging)을 활용해 토픽 기반 푸시 알림 기능을 구현했다. 처음 도입해 보는 기술이었지만, 왜 많은 서비스들이 푸시 알림에 FCM을 사용하는지, 직접 도입하며 그 이유를 알 수 있었다. ✅ 도입 배경우리 서비스는 대학교 축제 관리 플랫폼으로, 주 사용자층은 학생회와 일반 학생이다. 서비스의 핵심 기능 중 하나는 학생회가 학생들에게 실시간으로 공지사항을 전달하는 푸시 알림 기능이기 때문에 이 기능은 필수적이었다. ✅ FCM이란▶ FCM이란FCM(Firebase Cloud Messaging)은 Google이 제공하는 무료 푸시 알림 플랫폼이다...
[회고] 2025년도 상반기 - 나는 어떤 색인가
·
회고/나의 이야기
들어가며첫 회고는 격식체로 썼는데, 낯간지러운 걸 잘 못하는 성격이어서 남한테 보여주기가 쉽지 않았다. 다른 사람들 회고를 보니 대부분 격식체를 쓰길래 나도 따라 해 봤는데, 앞으로는 그냥 내 색대로 편하게 써보려고 한다. 스마일게이트 Dev Camp를 수료하다올해의 시작을 함께한 우리 캠프원들! 두 달 동안 동고동락하면서 토론할 때 가장 반짝거리던 멋진 사람들과 함께 캠프 생활을 보냈다. BBeBig 팀을 비롯해 모든 캠프원들, 그리고 인재영입팀까지. 무엇보다도 정말 좋은 리더였던 과장님 덕분에 화목한 분위기로 프로젝트를 마무리할 수 있었던 것 같다. 이제는 진심으로 응원하고 싶은 동료들이 생겼다는 것만으로도, 스마일게이트 Dev Camp는 내게 아주 큰 의미로 남게 되었다.[회고] 2025 스마일..
[우아한테크코스] 레벨 2 기록
·
회고/우아한테크코스
💭 들어가며Spring은 사실 작년에 김영한 선생님의 강의를 통해 깊이 있게 학습한 경험이 있어, 대부분 알고 있다고 생각했다. 하지만 이번 레벨 2를 거치며 그 생각이 오만이었다는 것을 깨달았다. 여전히 모르는 부분이 많았다. 다만 백엔드 공부를 시작할 때 처음 접한 프레임워크가 Spring이었던 만큼, 예전에는 이해하지 못했던 개념들을 이번 복습을 통해 내 것으로 만들 수 있었고, 그 주변 지식을 넓히며 더욱 단단해졌다는 느낌을 받았다. 또한 레벨 2는 단순히 하드 스킬뿐 아니라 소프트 스킬 측면에서도 많은 성장이 있었던 시간이었다. 특히 말하기에 대한 다양한 시도를 했고, 나만의 공부 방법을 끊임없이 탐색하며 의미 있는 두 달을 보낼 수 있었다. ✅ 미션 1 - 방탈출 예약 관리▶ PRStep..
[Spring] Spring, Spring Boot
·
Programming/Spring
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며Spring이라는 방대한 프레임워크를 공부하면서 공부량이 엄청나게 많아졌다. 처음에는 각 개념을 지엽적으로 공부하다 보니 어떤 기술이 Spring Core에 속하고, 어떤 것이 Spring MVC에 해당하는지 혼란이 생기기 시작했다. Spring 공식 사이트의 Spring Projects를 살펴보며, Spring 생태계가 내가 생각했던 것보다 더 크다는 사실을 알게 되었다. 이 과정에서 Spring과 Spring Boot가 본질적으로 다르다는 것도 인식하게 되었다. 따라서 이번 기회에 관련 글을 작성하며 정리해보고자 한다. ✅ 원시 서블릿 방식▶ 코드🔽 디렉토리 구조src/└── main/ ├── java/ │ └─..
[JPA] 영속성 컨텍스트, 엔티티 생명주기, @Transactional
·
Programming/JPA
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며JPA를 처음 배웠을 때는 영속성 컨텍스트라는 개념이 잘 와닿지 않아, 완전히 이해하지 못한 채 사용했었다. 하지만 Spring Data JPA를 사용하면서 영속성 컨텍스트가 어떻게 작동하는지 감을 잡으면서 장점을 체감하게 되었고, 왜 굳이 애플리케이션도 아니고 DB도 아닌 중간 영역에 데이터를 한 번 더 저장하는지 이해하게 되었다. 이번 글에서는 이를 복습하고 정리해보고자 한다. ✅ 영속성 컨텍스트와 엔티티 매니저▶ 영속성(Persistence)사전적 의미는 "오래 계속되는 성질"이라고 한다.데이터를 DB에 지속적으로 저장할 수 있는 성질이다. ▶ 영속성 컨텍스트(Persistence Context)영속성 컨텍스트는 엔티티를 관리..
[JPA] N+1 문제와 해결 방법
·
Programming/JPA
우아한테크코스 레벨 2에서 학습한 내용을 정리한 글입니다. 💭 들어가며JPA를 처음 배웠을 때도 N+1 문제라는 용어를 들어본 적은 있었지만, 정확한 의미는 알지 못했다. 이번에 JPA를 심화 학습하며 실제로 해당 문제를 직접 마주하게 되었고, 공부해야 할 필요성을 느꼈다. 이에 N+1 문제가 무엇인지 알아보고, 이를 해결하는 방법과 공부 중에 들었던 의문점들을 정리해 보고자 한다. ✅ N+1 문제란한 번의 쿼리로 가져온 엔티티가 지연 로딩(Lazy Loading) 설정 때문에 추가로 N개의 쿼리를 발생시키는 문제이다. ✅ 발생 원인▶ 지연 로딩(Lazy Loading)지연 로딩은 연관 관계가 설정된 엔티티가 즉시 로딩되지 않고, 실제 접근 시점에 쿼리가 날아간다.지연 로딩은 당장 필요하지 않은 ..
soeun2537