전체 글21 Long polling vs Webhook Long Polling vs Webhook 챗봇이 텔레그램 서버로부터 메세지를 읽어오기 위한 방법으로는 롱 폴링, 웹훅 방식이 있다. 롱 폴링 방식은 챗봇 서버가 텔레그램 서버로부터 메세지를 가져오는 방식이고, 웹훅 방식은 텔레그램 서버가 챗봇 서버로 메세지를 보내주는 방식이다. Long Polling 새로운 메세지가 있는지 텔레그램 서버를 지속적으로 호출하여 확인하는 방식을 Polling 이라 한다. 하지만, 실시간에 가깝게 새 메세지를 확인하기 위해 매우 짧은 주기로 텔레그램 서버를 계속 호출하는건 비효율적이다. Long Polling 방식은, 메세지가 있는지 확인하는 request 를 보낸 뒤, response를 받을 때까지 기다리는 방식이다. 새 메세지가 없다면 request를 보낸 커넥션이 열린.. 2024. 2. 11. 인터페이스로 확장하는 Java Enum - enum class implements Interface Java에서 enum을 사용할 때, 부모-자식 클래스의 관계 처럼 연관관계를 만들 수 있을까? enum은 암묵적으로 java.lang.Enum을 상속받기 때문에, 다중상속은 불가능하므로 다른 클래스를 상속받을 수는 없다. 하지만 인터페이스를 implements 한다면 가능하다. 프로젝트에 적용한 예시를 살펴보자. 멀티모듈 프로젝트에서 각 모듈별로 사용하는 에러코드를 공유하기 위해 BaseErrorCode라는 인터페이스를 만들고, 각 모듈별 에러코드 enum이 BaseErrorCode를 implements하여 모듈간 에러코드를 공유할 수 있도록 작성하였다. 이러한 접근 방식의 장점은 각 모듈이 독립적으로 에러코드를 관리할 수 있으면서도, 공통된 인터페이스를 통해 일관성을 유지할 수 있다는 점이다. Base.. 2024. 1. 28. [데브코스] 1월 3주차 회고 - 중간방학, 팀 프로젝트 발표회, 해커톤 팀 프로젝트 기간이 끝나고 이틀간의 방학동안 푹 쉬고 놀았다. 이번주는 aws 강의를 들어야 했고, 팀 프로젝트 발표회가 있었다. 감을 잡았다고 생각했는데 아직도 모르는게 많다 발표회 전날 우리팀은 프로젝트하면서 겪었던 문제에 대해 각자 기술회고를 작성하고, 공유하는 시간을 가졌다. 나는 이번 프로젝트에 적용한 시큐리티 관련 내용을 공유했다. 그런데 다른 친구가 발표한 내용과 관련하여 시큐리티를 수정해야 할 일이 생겼는데, 또 내가 잘 모르겠는 분야였어서 제대로 해결하지 못했다. 그리고 내가 참고한 깃허브 프로젝트가 best pracitce가 아니라 오히려 bad practice에 가까웠다. 무려 1100개 이상의 스타를 받은 레포지토리임에도 불구하고 스프링에서 제시하는 방향과는 많이 다르게 작성되어 있.. 2024. 1. 22. 빙터파크 팀 프로젝트 회고 [좋았던 점 & 잘한 점] 멀티 모듈로 분리하여 각자 맡은 도메인에 집중할 수 있었고, 코드 충돌도 적게 일어났다. 프로젝트 관리를 깃허브와 노션 두가지로 한정하여 효율적이었다. 툴이 많아지면 확인해야 할 것도 많아지는 것 같다. 나와 내 파트너는 적극적으로 코드리뷰를 해주었고, pr 메시지도 친절하게 작성해주어 성공적인 코드리뷰를 할 수 있었다. 파트너와 각자 책임을 맡은 부분에서 최선을 다하되, 막히는 부분이 있을 때 의견을 구하고 다양한 방면으로 생각해 볼 수 있어서 유익했다. 파트너와 매일 아침 간단하게 오늘 해야 할 일에 대해 브리핑하면서 막힌 부분은 어디인지, 어떤 점을 고민하고 있는지를 서로 공유하고 노션에 기록했다. 노션을 거의 연습장 수준으로 써놔서 정돈되지는 않았지만, 그동안 고민한 포.. 2024. 1. 18. Spring Security 멀티 필터체인으로 철벽 보안 구성하기 - multiple SecurityFilterChain, multiple Spring Security Configurations [서론] 빙터파크 프로젝트는 멀티 모듈 구조로 되어 있으며, 각 모듈의 API 서버가 독립적으로 운영된다. 이 구조에서 중요한 역할을 하는 것이 core-security 모듈인데, 이 모듈은 우리 서버로 들어오는 모든 API 요청의 수문장 역할을 한다. 이 글에서는 이러한 보안 설정의 핵심 요소인 SecurityFilterChain들을 소개하고, 각각이 어떻게 우리 시스템을 지키는지 설명하고자 한다. [본문] 우리의 보안 체계를 네 명의 문지기 비유로 설명해보자. 이 네 명의 문지기 중 어느 문지기에게 갈지 결정하는 것은 대왕 문지기, 즉 FilterChainProxy이다. 이 대왕 문지기는 먼저 당신이 어느 엔드포인트로 가고자 하는지 묻는다. 그리고 당신의 응답에 따라 적절한 문지기에게 당신을 안내한다.. 2024. 1. 17. [데브코스] 1월 2주차 회고 - 팀 프로젝트 마지막 스프린트 팀 프로젝트의 마지막 스프린트 기간을 보냈다. 이번주에 한 주요 작업은 - 공통 BaseErrorCode 정의 - SecurityFilterChain 분리 작업, 리팩터링 - Swagger 문서화 - .http 로 통합테스트 준비 정도인데, 특히 SecurityFilterChain을 리팩터링하면서 무한 디버깅의 늪에 빠지는 경험을 했다. 1. 시큐리티 개선 (feat. 공식문서) https://docs.spring.io/spring-security/reference/servlet/architecture.html 그동안 구현에 급급했기에 내가 만든 클래스가 각각 어떤 역할을 하는지 100% 이해하지 못한 상태였다. 낮에 마신 커피 때문에 잠을 설치다가, 우연히 스프링 시큐리티 공식문서에 설명된 아키텍쳐 설.. 2024. 1. 17. 이전 1 2 3 4 다음