전체 글

Better Tomorrow
카테고리 없음

도메인 장애 발생! (Certbot expire date error)

장애 발생 배경 최근 프로젝트에서 예기치 않은 도메인 장애가 발생했다. 이는 Grafana 모니터링 도구를 통해 관리 중이었음에도 불구하고, HTTPS 인증서가 갱신되지 않아 발생한 문제였다. 첫 번째 갱신 시도 실패 약 열흘전 인증서 만료가 임박함을 알았을때, Certbot을 통해 인증서를 갱신하려고 시도했었다. 하지만 Certbot은 인증서 만료일이 아직 한 달 이상 남았다고 판단하여 자동 갱신을 실행하지 않았다. 이는 실제 만료일과 Certbot의 인식 사이에 오류가 있음을 나타냈다. $ sudo certbot renew The following certs are not due for renewal yet: git-challenge.com/xxx.pem expires on 2024-06-10 (sk..

카테고리 없음

SQL? NoSQL? 확실하지 않다면,둘 다 써보자! (Spring Data, 추상화)

데이터베이스 선택은 많은 개발 프로젝트에서 중요한 결정 중 하나이다. 특히, SQL과 NoSQL 사이에서 선택하는 것은 각각의 장단점을 이해하고, 프로젝트의 요구 사항에 가장 잘 맞는 기술을 선택하는 데 중요하다. 이번 프로젝트를 진행하며 기획적으로 어떤 서비스를 진행할지는 결정 되었지만, 아직 종류의 데이터베이스를 사용해야 할지 쉽게 결정되지 않았다. 그렇다고, 개발을 미룰 수는 없기 때문에 SQL과 NoSQL을 둘 다 사용할 수 있도록 개발을 했던 경험을 공유해보려 한다. 특히, Spring의 Dependency Injection(DI) 기능과 추상화를 사용하여 데이터 액세스 계층을 설계하는 과정에 대해 다루고 있다. Spring Data를 사용해서 개발하였고, SQL을 사용하기 위해 Spring D..

카테고리 없음

테스트코드로 Swagger 생성하기

서론 개발 과정에서 API 문서화는 팀 내외부의 소통을 원활하게 하고, API의 사용성을 향상시키는 중요한 과정이다. 지난 Git-Challenge 프로젝트에서는 Swagger를 활용해 API 문서를 생성했었다. NestJS - openapi Swagger는 강력한 도구이지만, 서비스 코드 내에 Swagger 데코레이터를 직접 작성해야 했기 때문에 코드의 길이가 길어지는 문제에 직면했었다. 코드를 작성하고 관리하는 과정에서 이러한 방식이 실제 작업 흐름에 방해가 되는 것을 경험했다. Spring REST Docs로의 전환 이러한 경험을 바탕으로,이번 Exam-Lab 프로젝트는 좀 더 효율적인 방법을 모색하게 되었고, 그 과정에서 Spring REST Docs를 발견했다. Spring REST Docs의 ..

카테고리 없음

Custom Validation 만들기

Spring Web MVC 2강의를 들으면, HandlerMethodArgumentResolver 를 통해서 실제 로직을 실행해서 매개변수 값을 할당하는 방법을 Member 매개변수를 통해서 배운다. 또, 단순 어노테이션으로 검증하지 못한 복잡한 검증 로직을 수행해서 검증하고 BindingResult 를 통해서 오류를 발생하는 방법을 배운다. 하지만, 복잡한 검증 로직이 반복되면 매번 BindingResult 를 사용할 수 없기 때문에 Custom Validation Annotation을 만드는법을 알아보자. 상황 PathVariable로 들어오는 examId 값은 데이터베이스 조회를 통해서 유효한 id인지 검증해야한다. 단순 어노테이션이 아닌 데이터베이스 까지 조회해야하므로 검증 로직이 필요하다. @R..

카테고리 없음

HyperCLOVA X를 MergeMasters 일원으로 만들자

우리 Git Challenge 서비스는로 Git문제를 풀다가 모르는게 생기면 어떻게 하는가?! 바로, Google이나 Naver에 검색하던가 GPT, CLOVA X와 같은 ai에게 물어본다. 이는 사이트 이탈율과 직결된다! 우리 서비스 내에서 학습과 문제풀이를 한번에 병행할 수 있도록 CLOVA X를 MergeMasters 일원으로 영입하자!! 기획 1. CLOVA Studio 기반 AI의 역할 교육 지원: Git 관련 질문에 대한 즉각적인 답변 제공 문제 해결: 실시간으로 발생하는 Git 관련 문제에 대한 해결책 제시 시나리오 기반 학습: 다양한 Git 사용 시나리오를 통한 실습 기회 제공 2. 활용 방안 인터랙티브 챗봇: 사용자의 질문에 실시간으로 응답하는 AI 챗봇 통합 3. 기술적 요구사항 API..

카테고리 없음

Node exec is not exec (How does git use exec) - exec도 Injection 방어가 필요하다니

exec란? exec는 현재 프로세스를 새로운 프로세스로 대체하는 함수이다. 주로, 프로세스를 복제해서 새로운 프로세스를 만드는 fork 와 같이 사용된다. 만들어진 프로세스를 자식프로세스, 만든 프로세스를 부모 프로세스라고 하고 자식 프로세스에서 exec 를 해서 새로운 프로그램을 실행한다. git이 command를 실행하는 방법 https://github.com/git/git GitHub - git/git: Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the Git Source Code Mirror - This is a publish-only reposit..

카테고리 없음

[수학] 2024학년도 수능 수학영역 30번 (미적분)

30번 문제 30번 풀이 개념 2배각 공식, 극점의 정의, 변곡점

카테고리 없음

TypeScript, Babel, Webpack 함께 사용하기

Webpack webpack은 모던 JavaScript 애플리케이션을 위한 정적 모듈 번들러 이다. 모듈 번들러란? 모듈 번들러(Module Bundler)는 웹 애플리케이션을 구성하는 여러 개의 파일과 의존성을 관리하여, 이를 하나 또는 여러 개의 결과물로 출력하는 도구입니다. 주로 자바스크립트를 중심으로 작동하며, CSS, 이미지, 폰트 등의 다양한 자원도 처리할 수 있습니다. 주요 작업 파일 병합: 여러 개의 자바스크립트 파일을 하나의 파일로 합칩니다. 이로 인해 브라우저가 다수의 파일을 요청하는 대신 한 번의 요청으로 필요한 모든 자바스크립트를 로드할 수 있습니다. 의존성 관리: 특정 모듈이 다른 모듈에 의존하는 경우, 의존성을 해결하여 올바른 순서로 코드를 병합합니다. 코드 최적화: 불필요한 코..

코딩루이지
CodingLuizy