Hot
-
2024 상반기 ICT 인턴십 코딩테스트 및 지원 회고
먼저, ICT 인턴십 코딩테스트는 필수가 아니다. 코딩테스트를 실시하는 기업에 지원했을 경우에만 서류 평가에 반영되기 때문에 응시해야 한다. 다만 기업 별로 코딩테스트를 실시하는게 아니라 한 번만 응시하면 된다는 장점이 있다. 코딩테스트를 보는 곳은 해커랭크이다. https://www.hackerrank.com/ HackerRank - Online Coding Tests and Technical Interviews HackerRank is the market-leading coding test and interview solution for hiring developers. Start hiring at the pace of innovation! www.hackerrank.com 코딩테스트를 실시하는 기업..
2024.02.10
-
3. 카카오 챗봇 발화문, 엔티티 적용 - 파라미터 문서
1. 요구사항 카카오톡 채팅창에 명령어를 입력하는 것을 발화문이라고 한다. 발화문을 입력했을 때 HTTP Request로 JSON 형태에서 req.body.userRequest.utterance에 담긴다. https://chatbot.kakao.com/docs/skill-response-format#userrequest 챗봇 관리자센터 개요 · 도움말 - 챗봇 관리자센터 챗봇 관리자센터 개요 · 도움말 - 챗봇 관리자센터
2022.09.26
-
멋사 미션을 하며 스프링 부트 예외처리에 대해 알게 된 내용들
1. ExceptionResolver의 필요성 - 서블릿, WAS로 예외가 전달될 경우의 복잡함 컨트롤러에서 예외가 발생할 경우, 이 예외는 DispatcherServlet을 거쳐 Tomcat 서버인 WAS까지 전달된다.이 때, WAS는 예외가 발생한 걸 감지하고 /error (기본설정 경로이며, properties / yaml 파일로 변경 가능) 로 다시 요청을 보낸다. 그러면 해당 요청을 스프링부트에서 구현한 BasicErrorController에서 받게 된다. 사용자가 컨트롤러를 직접 구현할 때의 코드와 크게 다르지 않다. 기본적인 어노테이션 및 생성자가 존재한다.또한 HTTP 요청의 Content-Type에 따라 같은 /error 요청에 대해 다른 타입을 반환하고 있다. 1) 웹 브라우저..
2024.05.14
-
스프링부트 + Github Actions + Docker 사용 시 빌드 에러 해결
1. 기존에 사용하던 방식 소개 # 소스 빌드용 Base 이미지(Maven, Gradle에 호환되는 JDK 이미지) FROM amazoncorretto:17-alpine3.19 as build WORKDIR /app # 의존성을 가져오기 위해 필요한 파일만 우선 복사 COPY gradle gradle COPY build.gradle settings.gradle ./ COPY gradlew ./ RUN chmod +x ./gradlew # Gradle 빌드 명령어 실행 (CI/CD 환경에서 일관된 빌드를 위해 데몬 프로세스 실행 X) RUN ./gradlew dependencies --no-daemon COPY src src # 스프링부트 프로젝트를 Jar 파일로 빌드 RUN ./gradlew clean ..
2024.04.15
-
축구선수 몸값 분석 웹 크롤링 (1)
해당 프로젝트는 https://www.inflearn.com/course/%EC%9B%B9%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%B6%95%EA%B5%AC%EC%84%A0%EC%88%98%EB%B6%84%EC%84%9D#curriculum [무료] [Python 실전] 웹크롤링과 데이터분석 : 전세계 축구 선수 몸값 분석 - 인프런 | 강의 손흥민 통산 100호골 기념 프로젝트! 트랜스퍼마켓(Transfermarkt) 실전 크롤링 & 데이터 분석, - 강의 소개 | 인프런... www.inflearn.com 강의를 참고하여 진행하였다. 파이썬 웹크롤링의 기본적인 requests와 bs4를 이용하였으며, 데이터를 구조화하는데 있어서 padas 라이브러리를 사용하였다. import requ..
2022.06.30
-
멋사 미션을 하며 스프링 JdbcTemplate에 대해 알게 된 내용
1. JdbcTemplate을 사용했을 때, 발생하는 문제점JdbcTemplate을 사용하면 순수 Jdbc를 사용할 때 해야하는 여러 작업들을 스프링이 대신 해준다.순수 Jdbc를 사용하면 Connection, Statement, ResultSet을 가져오는 것부터 리소스 해제까지 해야하며,SQL Exception까지 직접 try-catch 해야하는 번거로움이 있다.JdbcTemplate은 이러한 작업들을 대신 처리하고, 개발자들은 애플리케이션 개발에 좀 더 집중할 수 있다. 하지만 이러한 JdbcTemplate에서도 약간의 단점이 하나 있었다.Jdbc 기술을 사용한다면 SQL 문을 개발자가 직접 작성해야 한다. 즉 SQL문이 조작될 경우, 이에 대응하기가 어렵다. 다음과 같이 특정 테이블에 데이터를 삽..
2024.05.20
-
Github Actions CI 소요시간 단축시키기 (Gradle 빌드)
1. gradlew 명령어 (build vs bootJar) gradlew bootJar는 실행가능한 jar 파일을 만드는데 필요한 작업들만 수행하고 있다. 위 그림과 같이 build 작업은 bootJar 작업 이외에도 test, check, assemble 같은 작업들이 포함된다. (check는 test에 의존적인 작업으로 test가 수행된 후에 진행됨) 따라서 이처럼 CI 워크플로우 동작시 시간차이가 발생하게 된다. 하지만 bootJar에는 test 작업이 포함되지 않는다. 모든 test를 통과해야만 실행가능한 jar 파일을 만들어야 한다면 bootJar를 test에 의존적인 작업으로 만들면 된다. 이는 build.gradle을 통해 추가할 수 있다. // build.gradle에 추가 bootJar..
2024.04.20
-
5. 현재까지 구현된 기능 총 정리
현재까지 구현된 기능은 총 세 가지로 "EPL 라운드 별 결과", "EPL 클럽 순위", "실시간 축구 뉴스"이다. 각 기능들은 LiveScore Football API를 기반으로 구현 되었다. 1. EPL 라운드 별 경기 결과 첫 응답 : 수정 전 undefined 출력 -> round 값을 따로 변수로 받아서 해결 제목 : vs 기준 왼쪽이 홈이고 오른쪽이 어웨이 였던 기존 방식 -> 홈, 어웨이 표시, 홈 팀 로고 추가 경기 일시 추가 : 경기 일자를 추가하여 한국 시각 기준으로 날짜와 시간을 추가하였다. const options = { method: 'GET', url: 'https://livescore-football.p.rapidapi.com/soccer/matches-by-league', q..
2022.10.18
New
-
로그를 통해 우리는 논리적 사고를 할 수 있다 [커넥션 풀 트러블 슈팅 - 3]
https://whxogus215.tistory.com/135 로그를 분석하며 문제를 발견하다 [커넥션 풀 트러블 슈팅 - 2]https://whxogus215.tistory.com/134 EC2가 자꾸 죽네...? [커넥션 풀 트러블 슈팅 - 1]서비스 오픈을 앞두고 있는 시점에서 서버가 터지는 일이 발생했는데, 한달 동안 두 번이나 이런 문제가 발생했다. 도whxogus215.tistory.com지난 포스팅에서 NginX 및 스프링부트의 로그를 바탕으로 원인을 분석하였고, 데이터를 저장하는 과정에서 불필요하게 많은 insert 쿼리가 발생함을 발견하였다. 그러나 IDENTITY 방식으로 ID를 관리하던 엔티티였기에 JPA가 아닌 JDBC를 통해 batchInsert를 적용하기로 하였다. 1. JPA..
2024.09.07
-
로그를 분석하며 문제를 발견하다 [커넥션 풀 트러블 슈팅 - 2]
https://whxogus215.tistory.com/134 EC2가 자꾸 죽네...? [커넥션 풀 트러블 슈팅 - 1]서비스 오픈을 앞두고 있는 시점에서 서버가 터지는 일이 발생했는데, 한달 동안 두 번이나 이런 문제가 발생했다. 도대체 어디서 문제가 발생한건지 싶어 EC2에서 실행중인 스프링부트(WAS) 컨whxogus215.tistory.com지난 포스팅에서 서비스를 정식 오픈하지 않았음에도 커넥션 풀의 스레드 기아 현상으로 인해 서버가 두 번이나 죽는 문제가 발생했다. 필자는 먼저 우리 서비스의 구조인 3-Tier에서 가장 앞 단에 있는 웹서버, NginX의 로그를 확인해보았다. 1. 충격적인 NginX의 로그 NginX의 로그는 Ubuntu 기준, /var/log/nginx/access.lo..
2024.08.30
-
EC2가 자꾸 죽네...? [커넥션 풀 트러블 슈팅 - 1]
서비스 오픈을 앞두고 있는 시점에서 서버가 터지는 일이 발생했는데, 한달 동안 두 번이나 이런 문제가 발생했다. 도대체 어디서 문제가 발생한건지 싶어 EC2에서 실행중인 스프링부트(WAS) 컨테이너의 로그를 확인해보았고,다음과 같은 에러가 발생했다. 당시에 로그를 저장하지 않고, 컨테이너를 재실행해서 로그를 캡쳐하지 못했다... 다만 해당 포스팅에서 발생한 것과 동일한 에러가 발생했다. (로그를 어떻게 효과적으로 남길 수 있는지에 대해서도 추후 공부해볼 예정...!) 우리 서비스는 성적 파일을 업로드하거나 자신의 공학인증 결과를 조회할 때 커넥션을 사용하여 DB의 쿼리 결과를 가져온다. 하지만 아직 오픈하기 전이라 서버에 들어오는 사용자가 우리 개발진들(3명) 말고는 없없다. 즉, 다수의 요청으로 인한..
2024.08.30
-
언어보단 그림을
그림은 좋은 소통수단이다. 문자보다 더 역사가 깊은 만큼 현대 사회에서도 그림은 강력한 소통수단이 된다.특히, 개발자들에게 있어서 그림은 중요하다고 생각한다. 개발자가 사용하는 그림 중 UML은 복잡한 시스템을 쉽게 이해할 수 있도록 표준화한 방식이다. 필자는 UML을 통해 협업에서 큰 도움을 얻었기에 지금도 팀원들과 소통할 때 많이 사용한다. (주로 개발 초기단계에 많이 사용) 필자의 경험을 기반으로 그림(UML)을 활용했을 때 좋은 점을 소개해보겠다.1. 서로가 다르게 이해하고 있는 부분을 초기에 빠르게 확인할 수 있다.당시에는 개발 초기단계였고, 웹 서비스의 흐름이 어떻게 동작하며 로직이 어떻게 수행되는지를 모두가 이해할 수 있기를 바랐다. 로직이 옳고 그름을 떠나서 일단 팀원들이 생각하는 그림이 ..
2024.08.28
-
브라우저에 url을 입력했을 때 일어나는 일
목차브라우저에 URL을 입력했을 때1. 로컬 PC의 hosts 파일 검색hosts 파일이란?디도스2. 로컬 DNS 캐시3. DNS 서버 쿼리로컬 DNS 서버상위 DNS 서버에 질의참고 자료브라우저에 URL을 입력했을 때크롬 브라우저에서 www.naver.com을 입력하면 어떠한 일이 벌어질까?우리에게는 1초도 안되는 시간이지만 그 사이에 많은 일들이 일어난다.먼저 https://whxogus215.tistory.com/126 에서 호스트 네임과 도메인 네임을 정리하였다.따라서 우리는 naver.com이라는 도메인 네임으로 접속을 하며, 그 중 www라는 이름을 갖는 서버의 리소스를 요청하게 되는 것이다.웹 서비스에서 서버에 리소스를 요청하는 HTTP 통신의 근간은 TCP/IP다. 따라서 사용자는 서버의 ..
2024.08.27
-
리눅스 서버를 진단하기 위한 OS 지식 정리
목차가상 메모리(논리적 메모리)메모리는 프레임 단위, 프로세스는 페이지 단위실제 주소를 찾는 과정을 줄이기 위한 방법, TLB가상 메모리는 주 기억 혹은 보조 기억의 메모리를 사용프로그램 실행단계PCB물리 메모리에 원하는 페이지가 없을 경우, page faultThrashing참고 자료가상 메모리(논리적 메모리)CPU가 연산을 수행할 때, 참조하는 주소 값은 실제 RAM에 적재되어 있는 프로세스의 주소를 가리키고 있지 않는다. 이를 이해하기 위해선 먼저 가상 메모리와 페이징 기법을 알아야 한다.가상 메모리는 논리 메모리라고도 부른다. 이와 반대되는 말은 물리 메모리로 실제 RAM을 뜻한다.OS는 각 프로세스가 독립적으로 메모리 공간을 사용할 수 있도록 하며, 이들이 서로에게 영향을 주지 않도록 한다.메모..
2024.08.26
-
운영체제 구조와 JVM
목차운영체제(OS) 구조플랫폼이란Native Code와 Managed CodeNative CodeManaged CodeJVM1. Class Loader (클래스 로더)2. Interpreter (인터프리터)3. JIT 컴파일러4. JNI (Java Native Interface)실제 하드웨어와의 통신 절차운영체제(OS) 구조컴퓨터는 크게 세 가지 영역으로 나뉜다.HW (CPU, RAM, SSD/HDD 등)SW (OS)Kernel Mode : OS가 하드웨어 리소스를 사용하기 위해 동작하는 모드User Mode : 사용자가 실행하는 프로세스를 실행하는 모드이처럼 OS는 하드웨어와 사용자가 실행한 소프트웨어(프로세스)의 중개자 역할을 하며,프로세스가 함부로 하드웨어 자원을 사용하지 못하도록 한다. 하드웨어 ..
2024.08.24
-
[Java] 스택, 큐, 데크
목차스택(Stack)주의할 점큐(Queue)스택과 큐의 메서드 정리양방향 큐(Deque)ArrayDeque와 LinkedList의 성능 차이LinkedList의 특징ArrayDeque의 특징ArrayDeque와 LinkedList 비교 정리스택과 큐를 사용할 때는 Deque(ArrayDeque)를 사용하자스택과 큐의 활용스택의 활용큐의 활용참고 자료스택(Stack)스택의 핵심 키워드는 LIFO(Last In First Out)이다. 마지막(최근)에 들어온 값이가장 먼저 나가는 특징을 갖는 자료구조이다.refs) https://www.programiz.com/dsa/stack해당 그림만으로도 모든 흐름을 알 수 있다. 가장 나중에 들어온 3번이 pop(스택에서 값을 제거하는 연산)을 했을 때, 가장 먼저 ..
2024.08.23
-
웹 서비스 구조 확장
Network - 웹 서비스 구조 확장목차Network - 웹 서비스 구조 확장HTTP 1.0 시절 웹 서비스 통신클라이언트와 서버의 통신의 근간정적인 문서에 동적 요소를 추가 - JavaScriptJavaScript는 서버에서 생성되지만 클라이언트에서 실행된다(중요)CORS에 대해서WAS(Web Application Server)와 MVC 아키텍처의 등장서버에서 View 의존성이 제거되다참고 자료HTTP 1.0 시절 웹 서비스 통신버너스리가 고안한 HTML 문서는 화면에 필요한 정보를 구조화하여 보여줄 수 있는 최초의 기술이었다. 이를 통해, 사람들은 데이터를 문서에 작성하고, 이후에 이미지가 추가되며, 디자인을 입히는 CSS가 추가되기도 하였다. 어쨌든, 이러한 정적 파일을 사용자가 요청하면 반환할 ..
2024.08.22
-
컨텍스트 스위칭
목차컨텍스트 스위칭이란CPU와 스레드의 비율에 따라 발생할 수 있는 상황들CPU 6개, 스레드 3개CPU 6개, 스레드 200개CPU 6개, 스레드 6개스레드가 처리하는 작업CPU-바운드 작업I/O-바운드 작업웹 어플리케이션에서의 스레드정리CPU 바운드 작업I/O 바운드 작업참고 자료컨텍스트 스위칭이란우리는 멀티 코어 환경에서 하나의 프로세스에서 여러 스레드가 동작하는 환경에 익숙해져있다.하지만 실제 스레드를 실행하는 실질적인 주체인 CPU(코어)에 비해 스레드가 더 많다면,결국 CPU 자원을 할당받지 못한 스레드는 대기 상태가 되어야 한다.하지만 운영체제의 스케줄링에 의해 대기 중이던 스레드는 다시 CPU에 의해 코드를 실행할 수 있다.이 일련의 과정을 통해 스레드들은 번갈아 가며 수행된다는 사실을 알..
2024.08.17
-
웹 서비스 구조
Network - 웹 서비스 구조목차Network - 웹 서비스 구조URL과 URIURL의 특징호스트 네임과 도메인 네임호스트 네임도메인 네임서브 도메인과 호스트 네임참고 자료URL과 URI웹 기술을 사용하여 통신하는 웹 서비스의 흐름에 필요한 개념 중 하나이다.URL : Uniform Resource IdentifierURI : Uniform Resource Locator우리가 웹 서비스를 사용할 때, 변하는 모든 것들은 자원(Resource)이라고칭할 수 있다.마이페이지 조회 : 서버에게 내 정보라는 자원을 요청한다.콘서트 좌석 예매 : 서버에게 내가 보고 싶은 공연의 좌석이라는 자원을 저장할 것을 요청한다.결론부터 말하자면, URL은 URI이지만, URI는 무조건 URL이라 할 수는 없다.refs)..
2024.08.17
-
[JPA] 스프링 Data JPA 기술을 공부하며 배운 내용 정리
해당 게시글에는 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 강의 | 김영한 - 인프런김영한 | 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 백엔드www.inflearn.com의 섹션 6 데이터 접근 기술 - 스프링 데이터 JPA을 수강하며 알게된 점들을 정리한 내용이 담겨있습니다.1. 스프링 Data란?https://spring.io/projects/spring-data Spring DataSpring Data’s mission is t..
2024.08.14
-
프로세스와 스레드
목차프로세스프로세스 구조코드힙데이터스택스레드단일 스레드와 멀티 스레드스레드와 스케줄링스케줄링 큐용어 정리멀티 태스킹과 스케줄링프로세스와 스레드프로세스의 역할참고 자료프로세스우리는 인텔리제이, VS Code 같은 IDE를 실행할 때, 화면에 있는 아이콘을 클릭한다.이 때, 우리가 실행하는 것은 프로그램이다. 프로그램은 휘발되지 않고, 영구적으로 저장되는하드 디스크에 저장되어 있는 데이터 모음이다. 프로그램 자체는 소프트웨어로서 어떠한 능력을발휘하지 않는다. 우리가 IDE를 통해 코딩을 하면서 다양한 기능들을 사용할 수 있는 것은프로그램이 아닌 프로세스이다.프로세스는 프로그램을 구성하는 여러 코드들을 CPU(코어)가 수행할 수 있도록 메모리를할당받으며, 운영체제 안에서 실행되는 프로그램을 프로세스라고 한다...
2024.08.13
-
멀티 태스킹과 멀티 프로세싱
멀티 태스킹과 멀티 프로세싱은 멀티 스레드를 이해하기 위해 필요한 기초 지식이다.이에 대해 정리해보면서 앞으로 공부하게 될 자바의 스레드 고급 지식을 이해해보자.CPU, 코어, 프로세서CPU는 중앙처리장치라고 하며, 컴퓨터의 연산을 담당하는 핵심 부품이다.코어는 이 CPU 안에 들어가있는 하드웨어 부품 중 하나로, 우리가 흔히 CPU가 연산을 처리한다고 했을 때, 실제 연산을 담당하는 녀석이다.프로세서는 명령어를 처리하는 논리 회로를 뜻한다. 컴퓨터가 하는 모든 일을 총괄하는 CPU를보조하는 역할이다. 하지만 현재는 CPU와 프로세서를 동일한 수준으로 언급하고 있다.즉, CPU랑 프로세서를 같은 뜻으로 간주하자.참고) https://whxogus215.tistory.com/82멀티 태스킹앞서, 코어는 하..
2024.08.12
-
[JPA] 스프링 JPA 기술을 공부하며 배운 내용 정리 (2)
해당 게시글에는 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 강의 | 김영한 - 인프런김영한 | 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 백엔드www.inflearn.com의 섹션 5 데이터 접근 기술 - JPA을 수강하며 알게된 점들을 정리한 내용이 담겨있습니다.1. JPQL이 SQL과 다른점JPQL은 Java Persistence Query Language로 엔티티를 조회하기 위해 사용하는 쿼리 언어이다.따라서 JPQL은 SQL과 ..
2024.08.03
-
[JPA] 스프링 JPA 기술을 공부하며 배운 내용 정리 (1)
해당 게시글에는 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 강의 | 김영한 - 인프런김영한 | 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 백엔드www.inflearn.com의 섹션 5 데이터 접근 기술 - JPA을 수강하며 알게된 점들을 정리한 내용이 담겨있습니다.1. JPA가 관리하는 엔티티, @Entity@Entity를 클래스 레벨에 선언하면 해당 클래스는 JPA가 관리하는 엔티티가 된다. 엔티티란 고유한 식별 값(PK)을 갖는 객..
2024.08.03
-
멋쟁이사자처럼 해커톤을 준비하며 알게된 점
아이디어를 구체화하기 이전에 먼저 페르소나를 최대한 구체적으로 정해야 한다.ex) 일에 치이며 받은 스트레스를 풀 방법이 없는 30대 직장인본인이 생각한 Pain Point에 대한 근거를 찾아야 한다.근거는 특정 기관의 리서치 자료가 될 수도 있고, 뉴스 기사 혹은 인터뷰가 될 수도 있다.1번과 2번을 반복하였음에도 와닿지 않는 주제라면 과감히 넘겨야 한다.아무리 좋은 기획을 갖추었더라도 주어진 시간안에 완성하지 못하면 의미가 없다.구현 가능성과 사용자 만족을 위한 완성도도 충분히 고려해야 한다.
2024.07.13
-
Github Actions 빌드 산출물 다운로드 시 주의할 점
필자는 Github Actions의 @actions/upload-artifact와 @actions/download-artifact 를 활용하여 각 작업 간 빌드 산출물을 공유할 수 있도록 하였다. 이를 통해, 산출물을 빌드하는 작업과 해당 산출물을 통해 도커 이미지를 빌드하고 푸시하는 작업을 분리할 수 있다. 다만 해당 명령어를 사용하는 데 있어서 주의해야 할 점이 있다. 1. download-artifact의 path는 아티팩트가 저장되는 경로필자는 처음에 다음과 같이 작성했었다. 이렇게 작성한 의도는 다음과 같았다.이전 job에서 빌드한 *.jar 파일을 업로드하였고, 해당 파일을 다운로드 받는다.다운로드 받은 *.jar 파일을 ./build/libs 폴더에 app.jar라는 이름으로 저장한다.하지만..
2024.06.26
-
AWS의 VPC, 서브넷, 보안그룹에 대해서
RDS와 EC2를 연결하는 과정에서 https://developer111.tistory.com/52 해당 게시글을 참고하였다.RDS의 보안그룹을 생성하고, EC2가 속한 VPC 및 서브넷 ID를 참고하는 부분이 자연스럽게 받아들여지지 않았다.그만큼 보안그룹과 서브넷 그리고 VPC에 대한 개념이 정확하게 정리되어 있지 않다는 뜻이기에 해당 내용들을 정리해보았다. 필자가 의문을 가졌던 점은 다음과 같다.EC2와 RDS가 각각 다른 보안그룹을 갖는 이유DB 서브넷 그룹을 생성할 때, 모든 가용영역을 추가하는 이유해당 작업의 목적은 EC2가 RDS에 접근하기 위함이다. 따라서 RDS는 퍼블릭 주소를 갖고 있지 않기에 RDS 자체에 보안그룹이 설정될 필요가 있다고 판단했다. 먼저 AWS에서 보안그룹이 어떠한 역할..
2024.06.21
-
멋사 미션을 하며 스프링 JdbcTemplate에 대해 알게 된 내용
1. JdbcTemplate을 사용했을 때, 발생하는 문제점JdbcTemplate을 사용하면 순수 Jdbc를 사용할 때 해야하는 여러 작업들을 스프링이 대신 해준다.순수 Jdbc를 사용하면 Connection, Statement, ResultSet을 가져오는 것부터 리소스 해제까지 해야하며,SQL Exception까지 직접 try-catch 해야하는 번거로움이 있다.JdbcTemplate은 이러한 작업들을 대신 처리하고, 개발자들은 애플리케이션 개발에 좀 더 집중할 수 있다. 하지만 이러한 JdbcTemplate에서도 약간의 단점이 하나 있었다.Jdbc 기술을 사용한다면 SQL 문을 개발자가 직접 작성해야 한다. 즉 SQL문이 조작될 경우, 이에 대응하기가 어렵다. 다음과 같이 특정 테이블에 데이터를 삽..
2024.05.20