한정된 시간 속에서 어떻게 하고 싶은지 선택하는 시기였다고 생각한다. 레벨4 아마 할 일이 가장 넘쳐나는 시기였다고 생각한다. 과거보다 많이 성장했고, 내가 얼만큼 정도로 얼마나 처리할 수 있는지 스스로 판단이 되어갔던 것 같다. 그래서 할 일에 비해서 과거보다 덜 바쁘게 느껴졌을 수도 있다. 취업 준비의 시작 코딩테스트를 거의 6주 동안 매주 봤다. 처음엔 많이 떨렸고, 점차 부족한 실력이었지만 실전을 통해 알게 모르게 늘고 있는 것 같다는 느낌을 받았다. 이때 코딩테스트를 준비하면서 알고리즘 문제를 더 풀 수도 있었지만, 그건 만약에 취업이 안되서 내년까지 가게 되더라도 스스로 준비하고 그때도 준비할 수 있는 부분이라고 생각했다. 우테코에서 제작근로, 미션, 팀플과 관련한 AWS 사용 등은 지금이 아..

마지막 미션인 레거시 리팩토링 미션은 중간에 제작근로 배포, 데모데이, 취업준비 등으로 우선되는 일들을 처리하고 고민하느라 거의 1달 넘게 진행했던 것 같다. 4단계까지 마무리했다. 끝까지 마무리 된 크루들이 많이 없을만큼 집중해서 하기 쉽지 않은 환경이었는데 마무리해낸 크루 중 한명이라 뿌듯하다.✌️ 레거시 리팩터링을 진행하면서 귀찮은 점도 엄청 많았고, 느끼는 점도 많았다. 무엇보다 이 미션을 집중해서 해봐야겠다는 생각을 한 것은 JPA에 대해 좀 더 공부해보고 싶었기 때문이었다. 아직도 스프링도 마찬가지이지만 JPA의 내부과정에 대해 온전하게 이해된 느낌은 아니다. 좀 더 깊게 이해해 나가고 있는 과정이라고 생각한다. 리팩터링 미션을 진행하면서 우아한테크코스 과정을 종합하는 미션이라는 생각이 들었다..

이미 sql 미션을 진행한지는 1달도 더 지난 듯 싶지만, 내용을 떠올리며 DB에 대해 학습하는 내용 위주로 작성해본다. 원하는 결과가 나올 수 있게 쿼리를 작성하고 일정시간(ex, 100ms)안에 조회할 수 있도록 하는 미션이었다. 서브쿼리 쿼리안에 쿼리가 들어가는 것을 서브쿼리(nested query)라고 한다. select 절, from 절, where 절 등에 들어갈 수 있다. Join 조인은 두 테이블을 합쳐 보여주는 것이다. 닫힌연산이라 여러번 가능하다. 크로스조인은 상호조인이라고도 불리며, 한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 곱하게 된다. 10개의 행을 가진 테이블과 13개의 행을 가진 테이블을 크로스조인하면 130행의 테이블이 생성된다. (10rows X 13rows = 1..
1. DB Replication 한 서버에서 다른 서버로 데이터가 동기화 되는 것이다. 원본 데이터를 가진 서버가 source서버, 복제된 데이터를 가지는 서버를 replica서버라고 한다. DB Replication을 왜 하는가? 생각할 때, 지금의 입장에서 replication을 하는 가장 큰 목적은 데이터 백업이라고 생각한다. DB는 안정성과 영속성이 중요시 되는데 1개만 존재한다면 단일 장애점으로 DB서버에 문제가 생길 경우, 기존 데이터를 지기키 못하는 문제가 발생할 수 있다. 이 경우 기존의 데이터를 유지하기 위해서 데이터 백업이 있어야 한다. 백업은 주기적으로 백업파일(덤프파일)을 만들 수도 있지만 이것은 실제 운영하고 있는 DB 전체에 lock이 걸리기 때문에 운영시 문제가 될 수 있다. ..
공통된 부분과 아닌 부분을 분리 어떤 부분을 공통으로 사용하여 추상화 할 것인지 아닌지를 결정해야 한다. 아래와 같은 부분들은 공통으로 추상화할 수 있다. Connection 생성 Statement 준비 및 실행 ResultSet 생성 예외 처리 Connection, Statement, ResultSet 객체 close 이 미션을 하면서는 기존에 사용하던 jdbcTemplate과 미션 가이드의 도움을 많이 받았다. 실제로 추상화 할 부분과 아닌 부분을 결정하는 것은 추상화 단계의 1단계라는 생각이 들었다. 사용한 자원은 닫는다 Connection, PreparedStatement, ResultSet 등의 사용한 자원은 닫아주어야 한다. 자원이 닫히지 않고 메모리를 계속 차지한다면 메모리 누수가 발생할 수..
기존 WAS가 떠있는 EC2 내부에 Docker 안에 DB를 구성 DB는 local에 파일로 볼륨 설정을 하여 컨테이너가 삭제되더라도 DB 데이터는 삭제되지 않도록 설정 왜 docker 환경에서 DB 구성을 전환하는가? docker 는 불안정한 환경 도커의 철학은 빠르고 쉽게 개발환경을 구축하는데 있다. 영속성을 가지는 DB 환경과는 상충된다. DB를 scale up, scale out 하는 상황이 온다면? WAS와 같은 서버에 있다면 그만큼 DB와 WAS가 사용할 수 있는 자원을 나누게 된다. DB의 대수를 늘리거나 사용할 수 있는 자원을 늘려야한다면 또 다른 EC2서버에 DB를 운영하는 것이 좋다. volume 설정을 통해서 사용하면 DB에서 제공하는 기능들 활용하지 못함 사실 DB에서 다양한 어떤 ..

Servlet 서블릿은 Java로 구현된 HTTP 요청 및 응답을 처리하기 위한 표준이다. 표준은 인터페이스로 제공되며, Servlet Container 구현체(Tomcat)가 제공한다.Jakarta Servlet defines a server-side API for handling HTTP requests and responses. Web Server VS WAS Web Server는 정적컨텐츠를 전송 WAS는 동적컨텐츠를 전송 Web Server + Container 요청에 따라 응답이 다름 Tomcat 은 Servlet Container Servlet Container는 WAS에 포함되는 개념 Servlet Container Servlet 생명주기를 관리하고 요청에 따라 스레드를 생성 요청 처리과정..

기존 설정해 놓은 로깅 설정을 확인하고 개선할 부분이 있는지 확인하였다. 설정파일을 좀 더 가독성 좋게 분리 gradle dependency를 줄임 dev 서버에도 cloudwatch 모니터링을 도입 기존 파일로 저장되던 로그파일 구조 개선 백업 디렉토리를 생성하여 당일 로그파일과 과거 로그파일을 분리 레벨별로 분리해주어 확인이 가능하도록 설정 수정내용 로그 패키지 구조 appender 디렉토리 생성 후 로그 레벨별로 어펜터를 설정하여 추가 appender 설정과 사용을 분리하여 logback-* 에서 include 하여 appender를 사용하는 방식으로 수정 logback.xml의 삭제 (logback-spring에 설정내용 통합) 로그 저장 파일 구조 기존 logs 에 다같이 저장 -> logs에 ..
- Total
- Today
- Yesterday
- 내부코드
- CS
- TIL
- JS
- DB
- 모의면접준비
- 우아한테크코스
- 글쓰기미션
- 인증
- python
- javascript
- 네트워크
- 월간회고
- 마스터즈코스
- OS
- React
- 카카오
- 코드스쿼드
- 우테코수업
- java
- 학습로그
- 운영체제
- 객체지향
- 개발공부일지
- 회고
- JPA
- 알고리즘
- Transaction
- TCP/IP
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |