목록전체 글 (154)
늘
대표적으로 외부 api를 호출하는 방식에 resttemplate이 있는데 이것은 동기 방식을 이용한 방법이고, WebClient가 비동기를 이용한 방식이다. 공식문서를 보면 스프링 5부터는 webClient사용을 더 추천하고 있다. 또한 restTemplate은 곧 deprecated 된다고 한다. 공통점으로는 둘 다 Http client에서 사용된다는 것이다. RestTemplate RestTemplate은 Multi-Thread와 Blocking방식을 사용합니다. Thread pool은 요청자 어플리케이션 구동 시에 미리 만들어 놓습니다. Request는 먼저 Queue에 쌓이고 가용한 스레드가 있으면 그 스레드에 할당되어 처리됩니다. 즉, 1 요청 당 1 스레드가 할당됩니다. 각 스레드에서는 Blo..
안녕하세요~! 긴 기다림 끝에 결과가 나왔습니다.. 진짜 최종코테에 아쉬움이 너무 많아서 떨어졌겠거니 생각하고 메일을 안 보려고 했는데, 도저히 궁금해서 3시 되자마자 메일을 봤는데... 정말 기쁘게도 합격을 했습니다..! 다음 학기를 휴학을 하고 이제 진짜 본격적으로 개발에만 몰두할수 있을것 같네요... 생각만해도 설렙니다...😁😁 그럼 일단은 너무 기쁘니 놀러 나가고 다음에 정신차리면 제대로 후기 작성하도록 할게요...😁
MVC 패턴 Model + View + Controller 가장 흔하고 알려져 있는 패턴이다. Model : 데이터와 데이터를 처리하는 부분 View : UI Controller : 사용자의 입력(Action)을 받고 처리하는 부분 MVC 패턴의 동작 순서 모든 Input은 Controller로 전달됩니다. Controller는 Input을 확인하고 Model을 업데이트합니다. 업데이트 결과에 따라 View를 선택합니다.(하나의 Controller는 View를 선택할 수 있기 때문에 1:n 관계로, 여러 개의 View를 관리할 수 있습니다.) Controller는 Model을 나타내 줄 View를 선택만 할 뿐, 직접 업데이트하지는 않습니다.(View는 Controller를 알지 못합니다.) View는 ..
프리코스를 진행하면서 새롭게 안 사실을 말하라고 하면 우선적으로 일급 컬랙션을 말할 것 같다. 긴 말은 생략하고 정의와 활용법 그리고 왜 사용하는 지를 알아보겠다!😄😄 일급컬렉션이란(First Class Collection)? - Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라고 한다. public class Cars{ List cars = new ArrayList(); Cars(List cars){ this.cars = cars; } ... } 역시 코드를 보는 게 이해하는 게 더 쉬울 것 같다! 위에 처럼 구현된 게 일급 컬렉션이다. 일급 컬렉션의 장점? 비즈니스에 종속적인 자료구조 Collection의 불변성을 보장 상태와 행위를 한 곳에서 관리 이..
매 주차 새로운 것을 배우고 적용해 보면서 제 자신을 바꾸기 위해 노력했다. 자신을 바꾼다는 게 생각보다 힘든 일이라는 것을 알았고 앞으로도 개발자의 길을 가는 데에 함께 해결해야 할 고민이라고 생각이 들었다. 프리코스를 진행하는 동안 코드에 대해서 많은 고민을 했습니다. 이전에는 클린한 코드보다는 코드의 내부 동작 방식 또는 새로운 기술에 관심을 주로 가졌다면 클린한 코드란 무엇인지, 가독성 좋은 코드는 어떻게 작성해야 하는지 등 새로운 관점을 배울 수 있었다. 3주간의 프리코스가 시험기간과 함께 하니 눈 깜빡한 사이에 지나갔다..😂😂😂 시험기간과 프리코스 기간이 정확히 겹치면서 오늘이 학교 종강일이자 프리코스 마지막 미션을 제출한 날이다..!🥳🥳 사실 마지막 주차는 아쉬움이 컸다. 변명 아닌 변명을 ..
시험기간이라 오랜만에 포스팅하는 것 같다...ㅠ 빨리 시험 끝났으면~😗😗 logback을 파일로 저장해도 좋지만, aws에서 제공해주는 cloud watch를 이용하면 로컬에 파일을 저장 안 해도 되고, 시각적인 지표도 볼 수 있으므로 더욱 유용하다. 따라서 springboot에서 logback으로 cloudwatch에 보내서 aws에서 관리하도록 하겠다. gradle implementation 'ca.pjer:logback-awslogs-appender:1.4.0' aws IAM 정책 설정 - CloudWatchAgentServerPolicy 정책을 추가해서 EC2에 연결 Cloudwatch-agent 설치 $ wget https://s3.amazonaws.com/amazoncloudwatch-agen..
아직도 안 믿긴다.. 현재..시..각... 2021-11-19 15:01분.... 아직 완전히 합격이 아니기 때문에 기분은 좋지만 간략한 느낌만 남기겠다. 자소서 몰입했던 경험들은 꽤 있어서 어떤 소스를 사용해야 할지 고민했었다. 그중 진부할 수도 있지만 공부와 관련된 것으로 결정을 했다. 열심히 적고 제출했는데 나중에 우테코 관련 글들을 우연히 보면서 자소서를 잘못 썼구나.. 하고 후회를 했다. 이때는 코테를 본 후에 발견한 것이라 만약 그전에 발견했다면 코테마저 망쳤을지도... 코딩테스트 코딩테스트는 구현 문제 위주로 나온다고 하여 구현을 집중적으로 풀어봤다. 구현이 워낙 약해서 걱정되었던 부분이었지만 우테코는 잘하는 사람이 아닌 성장하려는 사람을 뽑으려 하기 때문에 난이도가 크게 어렵지 않았다. 7..
🎐성능 테스트 목표🎐 성능 테스트 전략 수립 단계 중 가장 핵심은 바로 서비스할 소프트웨어에 대한 명확한 목표를 수립하는 것이다. 이 목표를 달성하기 위해 성능 테스트와 부하 테스트를 수행하고 튜닝작업을 진행한다. 만일 튜닝을 해도 목표를 달성하지 못한다면 하드웨어 증설이나 아키텍처 변경을 고려해 볼 필요가 있다. 서비스가 얼마나 빠른지(Time) 일정 시간 동안 얼마나 많이 처리할 수 있는지(TPS) 얼마나 많은 사람들이 동시에 사용할 수 있는지(Users)에 대해 이야기해야 한다. 성능 테스터의 관점에선 사용자가 Concurrent User 인지 Active User 인지가 중요합니다. Concurrent User : 웹 페이지를 띄어놓은 사용자처럼, 언제든지 부하를 줄 수 있는 사용자를 의미합니다...
학교 데이터베이스 수업을 들으면서 뒤로 갈수록 내용이 심화되고 좋은 정보도 많기에 글로 정리해보려고 한다!🤓🤓 Disk 구조 중요한 점은 File은 block단위로 디스크에 저장되고 메모리에 load 할 때는 page단위로 한다는 점이다. 그래서 block단위의 file들을 메모리에 가져올 때 transfer time이라는 비용이 발생한다. 이러한 transfer비용을 줄이기 위해서 cache가 등장한다. 이때, cache에서 read 할 땐 괜찮지만 update/delete 할 때는 디스크와의 동기화를 맞춰야 하는 게 중요하다.(db replication 할 때도 느꼈을 것이다) 이제 index를 보면 크게 두 가지로 나뉜다. unclustered Index : 엔트리 순서와 데이터 순서가 일치하지 않..
프로젝트가 거의 막바지 단계에 다다라서 운영할 때 꼭 필요한 로그를 찍으려고 한다. 이번 로그는 AOP를 이용해서 찍었지만 다음번에는 인터셉터를 이용해서 찍어보려고 한다. (경험은 많을수록 좋으니😇😇) Log설정 build.gradle implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' 우리는 aop를 적용할것이기 때문에 aop와 p6spy라이브러리를 추가해준다. slf4j slf4j2 p6spy는 나중에 정리해보도록 하겠다. 참고 주소는 글 맨 아래에 남겨두겠다! logback-spring.xml appli..