본문 바로가기

Develop Study157

(24.10.17) NginX 정리 + 본인 프로젝트에서 활용한 부분 추가 실제 프로젝트에서 NginX를 활용해서 일종의 리버스 프록시 서버로 React 컨테이너와 Spring Boot 가 실행되는 컨테이너 사이에서 사용자 화면단에서 작동될 수 있도록 활용을 했다.하지만, NginX를 사용한 이유, 그리고 어떻게 구체적으로 작동하는지에 대해서 더 자세하게 찾아보고 프로젝트 구성과 데이터 흐름을 더욱 이해하려고 했고 이를 정리했다.NginX고성능 웹 서버, 리버스 프록시 서버Web Application 단에서 요청을 처리, 정적 콘텐츠를 제공하는 웹서버 역할아키텍쳐 및 구조비동기 이벤트 기반의 아키텍처고성능의 동시 연결 처리 기능단일 쓰레드에서 여러 요청을 동시에 처리하는 방식메모리 사용량을 줄이고 성능을 향상Process 구조Master ProcessNginX 설정 파일을 읽고.. 2024. 10. 17.
(24.10.14) Swagger & Spring REST Doc 많이 사용할 수 있는 협업 상황에서의 API자동 문서화 도구 중에 Spring Framework와 관련된 툴에 관해실제로 사용한 경험이 없기 때문에각각의 대표적인 Swagger 와 Spring REST Doc에 관련해서 해당 툴/프레임워크에 대한 내용과 적용방법을 여럿 찾아서정리를 했다. 관련 부분은 Postman이나 HTML로 굳이 수동으로 하나하나 적었던 개발단계에서의 API  문서가 아닌,실제 협업을 위한 문서화에 적극적으로 활용이 되는 것 만큼적어도 어떻게 작동이 되고 어떻게 어느 시점에 사용이 되는지를 알아둘 필요가 있어선 정리를 했다.Swagger자동으로 RESTful API 설계, 문서화, 테스트 등 관리를 할 수 있도록 하는 오픈 소스 Framework자동으로 API 상세 명세 문서화Jav.. 2024. 10. 14.
(24.10.10) TDD & DDD / Filter & Interceptor & AOP 비교해보기 계속 CS 관련 모의 면접과 면접 코칭을 받고 있는데알고 있는 CS 지식을 자연스럽게 말하는데 많이 어려우나특히 여러개를 비교하라는 점에서 정리가 안되어있기 때문에 당황을 하는 경우가 많았다. 특히, DDD, AOP, Filter, Interceptor등 산발적으로 정리가 된 정보를 보다 함께 정리를 하면서 스스로 공부하면서비교를 할 수 있도록 하면서 면접 피드백 용, 다음 면접 대비를 하도록 한다. 특히, 정의가 애매할 수 있는 interceptor에 한해서 좀더 다뤄보면서 정리했다. TDD(Test-Driven Development) & DDD (Domain-Driven Design)TDD(Test-Driven Development)테스트 주도 개발실제 코드를 작성, 구현하기 전에 먼저 테스트, 또는.. 2024. 10. 10.
(24.10.08) 보안 공격 정리 : SQL Injection, CSRF, XSS Spring Framework에 기반으로 백엔드를 작성했기 때문에,그 안의 Spring Security를 활용해서 기본적으로 CSRF 등을 방지할 수 있는 기능이 활성화되어 이를 사용하기도 했고,JWT 역시 헤더에 넣는 방향으로 탈취를 방지하도록 설계를 했기 때문에직접적으로 보안 취약점을 다룰 수 있는 기회가 많이 있지는 않았다. 하지만, 실무에서 또, 언제나 항상 관련한 내용을 인지하고 있고, 어떻게 공격이 진행이 되는지,그리고 어떻게 방어와 예방을 할 수 있는지를 찾아보고 나름대로 내용을 합쳐서 정리를 했다. SQL InjectionApplication 에서 외부에서 입력한 값을 직접적으로 SQL 쿼리에 포함시켜 DB에 접근하여 실행시는 과정에서의 취약점DB를 임의로 조작, 중요 정보를 서버에서 탈취.. 2024. 10. 8.
(24.10.07) CAP 이론 정리 분산된 DB 등의 환경에서 이뤄져야하는 속성에 관련하여 정리를 했다.트랜잭션이나, 또는 기본적인 DB 관련 이론에 비해서 개념에 관련된 부분이라처음 들어본 이론이기도 하고,현대 클라우드 기반의 분산 시스템 Distributed System에서 어떻게 활용을 할 수 있을 지 볼 수 있다고 생각해서간단할 수 있지만, 여러 예시를 찾아보기도 하면서 정리했다. CAP 이론분산 시스템에서 3가지 속성(일관성, 가용성, 네트워크 분할 허용성) 중 모두를 동시에 만족할 수 없고, 2가지만을 만족시킬 수 있다는 이론분산 시스템 : 데이터를 저장하는 클라우드 등의 데이터 관리 시스템 등의 환경에릭 A. 브루어 교수가 2000년에 분산 컴퓨팅에 대해서 처음으로 주장일관성 Consistency분할된 모든 노드에서 동일한 데.. 2024. 10. 7.
(24.09.26) 정렬 알고리즘 : Quick Sort, Merge Sort Java에서 이미 Collecions 클래스를 통해서 이미 sort 메서드에서 내부적으로 진행하고 있는 정렬에대해서사실상 코딩 테스트나 실무에서는 크게 중심적으로는 사용하지는 않는 알고리즘이지만, 어떻게 작동이 된는 것인지, 그리고 분할한 뒤에 재귀적인 반복과 통합하는 방식의 정렬로알고리즘에 대해서 인식하고 이러한 방식을 참고해서 로직에서 참고할 수 있기 때문에, 따로 같이 블로그에 공부해서 스스로 코드도 작성하면서 정리퀵 정렬 Quick Sort데이터들을 어떤 기준이 되는 Pivot 데이터를 정해서 그 데이터 기준으로 작으면 왼쪽 크면 뒤로 미루는 분할 시켜 정렬하는 방식을 반복하면서 정렬하는 방식피봇은 대게 첫번째 또는 마지막 인덱스 값으로 선택순서를 보장하지 않고 오로지 정렬만을 하는 방식상대적으로.. 2024. 9. 26.
(24.09.24) 객체 지향 설계 원칙, SOLID 원칙 이력서/자소서 작성과 면접 내용을 체계적으로 Notion에 정리하면서추가적으로 정리하는 내용에 대해서 블로그에 하나씩 더 자세하게 나만의 글로 적고 학습하려고 한다. 객체 지향 프로그래밍을 위해 Java언어와 Spring 프레임워크를 사용하면서,가장 많이 사용한 것이 IoC 제어의 역전과 DI 의존성 주입을 가장 중심적으로 고려하면서 프로젝트를 진행했다. 하지만, 객체지향의 디자인패턴을 다룰 때, SOLID 원칙을 고려한다고만 간단하게 알고 있었지,정확하게 각 원칙을 정리할 필요가 있었기 때문에, 해당 부분을 찾아가고,직접 정리하면서 최대한 기억을 하려고 했다. 간단할 수 있지만, Java  문법을 하면서 익혔던 polymorphism 등의 개념을 정확히 고려한 것을그대로 프로그래밍 구조를 구축을 할때 .. 2024. 9. 24.