본문 바로가기

개발일지

(102)
[230625] 네트워크와 Java Spring 기본 개념 이해하기 (3) JDBC ❓JDBC는 뭐지? 💬 JDBC는 애플리케이션과 DB 사이에서 연결 및 종료, 쿼리 전송 등을 제공하는 API다. ❓JDBC는 어떻게 동작하죠? 💬 JDBC 인터페이스를 통해 요청을 하면 DriverManager에 의해 연결된 DB로 쿼리가 보내지고 그에 따른 응답을 받을 수 있다. 그리고 DriverManager와 DB 사이에는 애플리케이션의 요청을 DBMS가 이해할 수 있게 바꿔주는 JDBC Driver가 있다. ❓JDBC Driver가 왜 필요하죠? 💬 SQL 표준이 있지만, 각 제품(MySQL, MongoDB, Oracle 등) 마다 기능이나 처리하는 방식이 조금씩 다르다. 그래서 자바 어플리케이션의 요청을 각 DBMS가 이해할 수 있게 변경해 주는 중간 다리가 필요하다. Introdu..
[ 230625 ] 28주차 회고 일주일 간 진행한 내용 1. 알고리즘 문제 페어 프로그래밍 2. 사이드 프로젝트 3. 자바 스프링 강의 듣기 알고리즘 문제 페어 프로그래밍 [진행] 팀원 분들과 저번 주 선배 개발자의 조언 기반으로 논의를 해 현재 우리에게 가장 적합한 방법으로 진행했다. 각자 8분 정도 풀어보는 시간을 가졌다. 안 풀리는 문제의 경우 X표를 달고 다음 문제로 넘어갔다. 오늘 목표치의 문제까지 전부 보고 안 되는 문제를 다시 한번 8분 정도의 시간을 들여 풀어봤다. 그렇게 두 번을 본 후 못 푼 문제나 이해가 안 되는 문제들에 대해서 두 명씩 짝을 지어 페어 프로그래밍을 진행하며 해결을 했다. [생각] 각 문제를 짧더라도 충분히 고민해 볼 수 있는 시간을 가지는 것에는 큰 이점이 있다는 걸 알았다. 자신이 무엇을 알고 무..
[230624] 네트워크와 Java Spring 기본 개념 이해하기 (2) Controller Annotation 1. PathVariable 👉 클라이언트가 URL 경로에 포함시켜 보낸 데이터를 받아올 수 있는 Annotation 👀 Client - Server 예시 [GET] http://localhost:8080/hello/request/star/Robbie/age/95 @GetMapping("/star/{name}/age/{age}") @ResponseBody public String helloRequestPath(@PathVariable String name, @PathVariable int age) 2. RequestParam 👉 클라이언트가 Query로 보낸 데이터를 받아올 수 있는 Annotation 👀 Client - Server 예시 [GET] http://..
[230623] 네트워크와 Java Spring 기본 개념 이해하기 (1) HTTP 네트워크의 핵심은 "요청"하고 "응답" 받기이다. 자유롭게 요청을 보낸다면 응답을 해주는 쪽에서 요청에 대한 정확한 응답을 내려주기 힘들 것이다. 컴퓨터는 정확히 알려주지 않으면 모르기 때문이다. 제대로 된 응답을 받기 위해 제대로 된 요청을 보내야 했다. 이를 위해 만들어진 규약이 HTTP이다. Web Server HTTP 요청에 대해 정적인 데이터와 동적인 데이터를 응답받을 수 있다. 정적인 데이터의 경우 Web Server에서 처리를 하며 동적인 데이터의 경우 WAS(Web Application Server)에서 처리를 해준다. WAS도 정적인 페이지를 처리를 해줄 수 있지만 정적, 동적 페이지를 분리를 해서 각 서버에서 응답을 해주는 것이 효율이 좋다. 정적인 데이터를 응답해 주는 데에 ..
[ 230622 ] 제대로 이해하고 하자 기술 매니저님과 대화 대용량 트래픽&데이터 처리에 대해서 조언을 구했다. 간단하게 프로젝트를 하면서 배울 수 있으면 좋을 것 같아서 진행 방식과 방향성에 대해서 물어보았다. 그런데 오히려 질문들이 날아왔다. 대용량 트래픽&데이터 처리를 하기 위해 Redis, Kafka를 쓴다고 하는데 그걸 왜 사용하는지 등등이었다. 나의 현실 기술 매니점님께서 물어보신 질문들에 대해서 제대로 된 대답을 한 것이 아무것도 없었다. 그래도 어느 정도 알고 있는 것들도 있다고 생각했는데 말이다. 엄청 반성을 하게 되었다. 아는 것이 제대로 아는 것이 아니었기 때문이다. 기술 매니저님의 조언 어떤 기술을 쓰더라도 제대로 알고 있어야 한다는 것이다. 그리고 그 기술에 대해 자기만의 생각을 가지고 있어야 한다고 했다. 개발적인 지..
[ 230621 ] 공공데이터 포털 200만건 데이터 DB에 넣기 이유 항해 99를 같이 듣는 팀원 분과 사이드 프로젝트를 하기로 했다. 많은 데이터를 처리하는 것을 목표로 잡았다. 그래서 많은 데이터가 필요했고 쉽게 구할 수 있는 공공데이터 포털을 사용하기로 했다. 약 200만 건(약 900M)인 일반 음식점 데이터를 가져다가 사용하기로 했다. 환경 데이터를 저장하기로 한 곳은 AWS의 RDS를 사용하기로 했다. 프리티어 버전으로 MySQL DB 인스턴스를 생성했다. 그리고 사용할 유저와 데이터베이스를 만들고 권한을 부여했다. 첫 번째 문제 사항 각 필드가 가진 최대 길이를 알지 못한다는 것이었다. 테이블을 생성할 때 임의의 길이로 만든다면 일차원 적으로 데이터베이스의 공간 낭비가 일어날 것이다. 또한 데이터를 넣을 때도 데이터의 길이가 맞지 않아 문제가 될 수 있었..
[ 230620 ] HttpServletRequest의 InputStream 문제 문제 사항 Graphql로 들어오는 요청을 구분하여 받기 위해 Filter를 추가했다. Filter에 요청된 Query를 확인하기 위해 InputStream을 사용했다. 데이터가 정상적으로 출력되는 것은 확인할 수 있었다. 하지만 데이터 출력 이후부터 백엔드가 정상적으로 동작하지 않는 문제가 생겼다. [ 문제 코드 ] public class GraphqlAuthenticationFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request ,HttpServletResponse response ,FilterChain filterChain) throws ServletExceptio..
[ 230619 ] Chained Exception ? 궁금한 계기 강의를 듣다가 Chained Exception 내용이 나왔다. Exception은 흔히 들어본 반면 Chained Exception 너무나 생소한 단어였다. 검색을 해보며 Chained Exception은 무엇이며 어떻게 사용할 수 있는지에 대해 찾아보기로 했다. 오라클 공식 문서와 블로그를 통해 감을 잡을 수 있었다. Chained Exception 란? 예외 간의 원인과 결과를 연결해 준다. 주로 여러 가지 예외를 큰 분류 예외로 묶어서 다루거나 Checked Exception을 Unchecked Exception으로 포장을 할 때 사용을 한다. 에러가 있을 경우 정확한 원인을 찾을 수 있도록 하기 위해 사용하기도 한다. 예시로 흔히 우리가 IDE에서 에러가 뜰 때 쭉 보이는 메시지들을 ..