전체 글 17

[MCP] 요즘 핫하다는 MCP가 뭘까?

올해 초부터 가장 이슈가 되고 있는 주제 중 하나가 MCP(Model Context Protocol)이다.내가 알게 된 시기가 2025년 3월이고, 6월인 지금에서야 간단하게 사용해보았다. 1. MCP란? - Model Context Protocol - 대규모 언어 모델(LLM) 애플리케이션이 외부 도구, 시스템 및 데이터 소스와 상호 작용할 수 있도록 개발한 개방형 표준이다. (위키백과) 이렇게 들으면 이게 뭔가 싶다. 더 검색을 해보면 USB-C를 언급하며 설명하기도 한다. 이 사진이 구글에 MCP를 검색해서 찾아보면 매우 자주 접하게 되는 사진이다.생성형 AI가 보이고 USB 포트가 보이는데... 그래서 이게 뭔데?? 현재 나는특정 기능을 가진 모듈이 여러개 있고 이 모듈을 생성형 AI에 부..

공부의 일상 2025.06.24

[배포 자동화] aws, github actions을 활용한 자동 배포 파이프라인 구축기

1. 시작 전 준비사항 1. aws 계정 및 ec2 인스턴스 (Linux) 생성먼저, aws 계정은 프리티어로 생성해주었다.그런 뒤 ec2 인스턴스를 생성하고 설정을 잡아주었다.[설정사항]1. 퍼블릭 ip주소ec2 > 인스턴스 > 탄력적 ip > 탄력적 ip 주소 할당2. 인바운드 / 아웃바운드 설정ec2 > 보안그룹 > {보안그룹 이름} > 인바운드 규칙 / 아웃바운드 규칙SSH 접속과 톰캣을 내장하고 있는 스프링 부트 프레임워크를 was를 띄울 것이기에 443, 8080 포트를 인바운드에 열어주었다. 2. s3 생성빌드 파일 (.jar)와 shell 스크립트를 s3 버킷에 업로드 할 것이기 때문에 s3도 생성해준다.s3 > 버킷 > 버킷 만들기누구나 s3 버킷의 데이터에 접근해 다운로드하지 못하도록 ..

공부의 일상 2025.02.02

[소프티어] 나무 공격 Java

Softeer 소프티어Lv2. 나무 공격해당 문제를 풀이한 뒤, 다른 풀이와 비교하였습니다.저와 같은 풀이는 보이지않아 정리 글을 작성해봅니다! [문제]https://softeer.ai/practice/9657 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai [문제 설명]n*m 크기의 격자에서 2번 공격(고정)을 한다.첫 번째 열부터 마지막 열까지 투사체를 날려 공격을 진행한다.투사체와 환경 파괴범이 만난다면 서로 사라진다.공격되는 행의 범위는 주어진다. [결과값]2번 공격 이후, 남아 있는 환경 파괴범 수. [접근 방법] 2번 공격(고정) 이니 가장 바깥 쪽 for문으로 2번 반복할 것이다.for (int attack = 0; attack 공격되는 행의 범위가 주어졌으니, 이 범위..

코테 2024.11.02

[Spring Boot] 패키지 구조 참고 사이트

스프링부트 패키지 구조 여러 프로젝트에서 spring boot 개발 플랫폼을 사용해 진행해보았지만,프로젝트 초기 매번 고민이 되는 부분이있었다. 바로 패키지 구조, 패키지명 등등이 부분에 대해서 GitHub이나 블로그 등을 검색해 참고하였지만,모든 프로젝트의 구조가 동일하지 않았다.그래서 나는 어떤 프로젝트 구조가 적합한지 장단점 등을 파악하고 사용하고 싶었다. 최근 Spring Boot 관련 책을 읽다가 알게된 도움이 될만한 도메인을 공유하고자 한다. 1. https://dzone.com/articles/package-structure Get Your Java Package Structures Right - DZone dzone.com2.http://www.javapractices.com/topic/T..

공부의 일상 2024.08.24

[build tool] maven이란?

빌드 관리 툴, mavenmaven과 gradle은 자바의 빌드 관리 툴이다. 나는 처음부터 gradle만 사용해왔고, gradle만 보았다. 그런데 역시 다방면으로 경험해야 좋은 법...maven으로 관리 되는 spring boot 프로젝트의 소스 코드를 볼 일이 생겼다.maven에 대해서 알아보고자 한다. 특징maven- 과거 자바의 대표 관리 도구였던 Ant를 대체하기 위해 개발되었다.- pom.xml (project object model) 파일로 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성을 관리한다. (xml 기반의 빌드 스크립트)- 라이프 사이클이 존재한다. 라이프 사이클이란?=> 미리 정해진 빌드 순서maven은 작업 방식이 정해져있고, 빌드 순서가 정해져있어 라이프 사이클이 존재한..

공부의 일상 2024.08.12

[웹 취약점] 계정 관리 취약점 및 대응 방안

웹 취약점 / 계정 관리 문제 발생 / 대응 방안Java Spring으로 개발되어 운영 중이던 웹 페이지에 대해서 취약점 점검을 했다. 그러고 취약점 점검 결과 pdf 파일을 받았다.여러 취약점이 발견됐지만, 그중 하나가 "취약한 계정 관리"이다. 회원가입할 때 비밀번호 설정 규칙이 적용 안됐다는 것인데... 아무리 확인해도 규칙이 적용되었고,규칙에 맞지 않으면 alert 경고 창이 뜬다.... 한참을 고민하다가, 사이버 안전센터에 연락을 취해보았다.나: "제가 확인한 결과, 규칙에 맞지 않으면 alert 창이 뜨고, 회원가입이 불가능합니다. 어느 부분을 확인해 보아야 할까요?"사이버 안전센터의 답변은1. 처음 회원가입 창에서는 규칙에 맞게 비밀번호를 작성하고,2. 본인들만의 Tool로 패킷을 가로채 비..

공부의 일상 2024.07.14

[무중단 배포] 롤링 배포, 블루 그린 배포, 카나리 배포

무중단 배포롤링 배포, 블루 그린 배포, 카나리 배포 프로젝트 배포에도 여러가지 방법이 있다. 개발된 애플리케이션을 쉽고 안전하게 배포해야하고,만약 문제가 발생한다면, 쉽게 이전 버전으로 돌려야하기 때문이다! 3가지 배포 방법 (무중단 배포)에 대해서 조사해보았다. 0. 무중단 배포서비스 장애와 배포의 부담을 최소화하기 위해 운영 중인 서비스를 중단하지 않고 배포하는 기술핵심: 로드밸런서를 통해 연결된 2개 이상의 서로 다른 IP를 가진 인스턴스에 트래픽을 제어해 배포 1. 롤링 배포특정 개수의 서버들을 돌아가며 배포하는 방법이다.사용 중인 인스턴스에서 점진적으로 교체하는 것. 서비스 중인 인스턴스를 로드밸런서 라우팅에서 제외한 뒤, 새로운 버전을 배포해 다시 라우팅한다.이를 반복해서 모든 인스턴스에 새..

공부의 일상 2024.06.11

[io 도메인] 자주 접하게 되는 ".io" URL은 뭘까? (접속하면 위험한 주소일까?)

[io 도메인]몇 년 전부터 .com, .kr로 끝나는 URL이 아닌 .io로 끝나는 주소가 많이 보이기 시작했다. 몇 년 전 .io를 처음 접한 내 모습은 접속을 꺼렸었다. (괜히 눌러보면 안 될 것 같고...) 하지만 시간이 흐를수록 점점 더 많이 우리의 일상생활에서 볼 수 있다. 최근에 노션 접속 링크 (매우 길고 어지럽다...)를 깔끔하게 바꿔주는 서비스인 oopy를 사용하게 되었는데, io 도메인으로 바꿔주었다. 그래서 이 주제에 대해서 글을 작성하고 있다. [io 도메인이란?]우리가 일상적으로 접하는 도메인은 크게 2가지로 나뉜다.1. Country Code Top Level Domain(.kr, .jp, .us ...) -> 해당 국가에 거주하는 단체, 개인이 사용 가능2. Generic T..

공부의 일상 2024.06.04

[TypeScript] 사용 이유, 등장 배경

TypeScript란?2012년 MS가 개발한 프로그래밍 언어다.이름에서 볼 수 있듯이 JavaScript 언어에서 Type을 지정할 수 있다.컴파일 후, 다시 JS로 사용되어지기 때문에 Superset 개념이다. 또한, TypeScript에 대한 인기와 사용률은 계속 높아지고 있는 추세다. 왜 사용할까?타입스크립트의 장점1. Type을 사용하면 코드 퀄리티와 가독성을 높일 수 있다.2. TypeScript는 컴파일 과정에서 타입을 지정하기 때문에 컴파일 에러를 예방할 수 있다. (실제로 JavaScript 버그의 15%가 사전에 TypeScript로 감지할 수 있다고 한다.) 예를 들면,function sum(a, b) { return a + b;}JSfunction sum(a: number, b: ..

공부의 일상 2024.05.31

[JPA Pageable] 페이지네이션 속도 비교, 향상

Pageable, OFFSET LIMIT 속도 비교요즘 단순히 구현보다는 그 이상의 성능 향상 등에 대해서 공부 중이고 실습 중이다. (백엔드 직무로 취업을 준비하려면 단순 구현에서 끝내면 안 된다 생각했기 때문...) Daily Report 프로젝트에서 진행한 Spring Boot 기반의 API 서버를 건드려보기로 했다.가장 먼저 눈에 띈 것은 페이지네이션 API (페이지네이션만 1주일 넘게 잡고 있다...)이 API는 아래와 같이 프로젝트 첫 화면에서 게시글을 보여주기 위해 개발해둔 API였다. 먼저, API의 속도를 개선하기 위해 먼저 작성된 코드를 확인했다.내가 작성해둔 코드는 JPA의 Pageable을 사용해서 페이지네이션 API를 생성했었다.@GetMapping("/board/paginatio..

공부의 일상 2024.05.29