반응형

분류 전체보기 31

Nginx

Nginx란 ? 경량 웹서버 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 함 Nginx 흐름 Nginx는 Event-Driven구조로 동작하기 때문에 한개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 동시에 처리할 수 있음 Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 스레드를 생성하지 않기 때문에 프로세스와 스레드생성비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능 이러한 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있음 Event-Driven? apache의 C1..

Dev/Web 2023.07.26

Web Server & WAS

Web Server 웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버 정적 컨텐츠? 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠 이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해줌 ex ) Apache, Nginx 등 WAS (Web Application Server) WAS란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버 HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 ..

Dev/Web 2023.07.26

Functional Programming In Java (ft. Lambda , StreamAPI)

지난 글에서는 함수형 프로그래밍 기본 개념을 정리하였고 이번 포스팅에서는 자바에서 함수형 프로그래밍을 어떻게 사용하고 있는지에 대해 알아보려고 합니다. Java8 버전부터 함수형 프로그래밍을 지원하기 위해 람다와 스트림이 도입되었습니다. 람다와 스트림을 사용하면 함수형 프로그래밍 스타일로 자바 코드를 작성할 수 있습니다. 물론 람다와 스트림을 사용하여 작성한 코드를 일반 스타일의 자바코드로 바꾸어 작성하는 것이 불가능하진 않습니다. 달리 말하면 람다와 스트림 없이도 자바 코드를 작성하는데 어려움이 없다는 뜻입니다. 하지만 그럼에도 불구하고 람다와 스트림을 사용하는 이유는 작성하는 코드의 양이 줄어들고 읽기 쉬운 코드를 만드는데 유리하기 때문입니다. 예전에 Stream 관련된 포스팅을 했었기 때문에 람다에..

Dev/Java 2023.06.18

함수형 프로그래밍(Functional Programming)

1. 함수형 프로그래밍에 대한 이해 프로그래밍 패러다임 (Programming Paradigm) 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다 명령형 프로그래밍 : 무엇(what)을 할 것인지를 나타내기보단 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍 : 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍 : 객체들의 집합으로 프로그램의 상호작용을 표현 (c++ , java, c#) 선언형 프로그래밍 : 어떻게 할건지 (How)를 나타내기보다 무엇(What)을 할 건지를 ..

Dev/개잘알 2023.06.02

[DB] 인덱스(Index)

들어가며 회사에서 약 12만건의 테스트 데이터를 삽입 후 테스트를 하다가 검색 속도 저하 이슈가 발견됐습니다. 검색 속도를 향상 시킬 방법을 생각하다가 잊고 지냈던 index가 떠올랐어요 하지만 회사 프로젝트에 적용 시키기엔 인덱스에 대한 개념을 정확하게 알고 있지 못한 상태라고 판단이 됐고 정확한 개념 파악 후 프로젝트에 적용시키기 위해 정리하게 됐습니다! 인덱스 적용 후 데이터 검색 속도가 눈에 띄게 향상 됐습니다. 정확한 수치를 기록해뒀으면 좋았을텐데 현재는 퇴사를 해서 확인 할 방법이 없네요,,^^ 1. 인덱스(Index) 란 ? 인덱스란 ? 인덱스는 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조입니다. 테이블의 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도..

Dev/DB 2023.04.20

지연로딩(Lazy Loading)

지연 로딩 (Lazy Loading) ? JPA(Java Persistence API)에서 모든 데이터를 한번에 가져오는 것이아니라 필요한 데이터만 필요한 시점에 가져오는 기술 네트워크를 통한 데이터 전송 양을 줄여 애플리케이션의 성능을 향상시키기 위해 사용됨 @Entity public class Customer { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany(mappedBy = "customer", fetch = FetchType.LAZY) private List orders } @Entity public class Order { @Id @GeneratedVal..

Dev/JPA 2023.04.09

[JPA] Open In View

들어가기 전 ??? : 아름씨 서버가 응답을 안해주고 있는데요? 나 : 왜요...? 로그를 확인해보니 DB 커넥션 누수가 발생했고 집을 나간 커넥션들은 돌아올 생각을 안하고 있었습니다. 누수 포인트를 확인 해보니 SSE를 연결하는 API에서 사용자 정보를 DB에서 조회를 하기 위해 DB 커넥션을 사용한 뒤 SSE가 종료되기 전까지 커넥션을 유지하고 있어서 발생한 이슈였습니다. 왜 이런 이슈가 발생했을까요? Open In View Open-In-View는 관례상 OSIV(Open-Session-In-View)라고 하고, 경우에 따라 Open-EntityManager-In-View 라고도 합니다. JPA에서 제공하는 기능 중 하나로 application.yml 설정 파일에서 Open-In-View를 true..

Dev/JPA 2023.03.11

글또 8기 - feat. 나만의 로그를 남기는 과정

1. 왜..또 글또를...? 글또 7기를 통해 주기적인 글쓰기를 처음 시도를 했다. 2주에 한 번씩 글을 작성해서 다른 사람들의 피드백을 받고 피드백을 해야 한다는 점이 매우 부담스러웠다. 또한 글감을 생각하는 것도 쉽지 않았다. 글감은 없는데 마감일은 다가오고 다른 참여자 분들의 피드백을 위해 글을 또 읽어야 하고 당시에는 "왜 내가 이걸 한다고 했을까...?" 하는 후회도 하며 남몰래 스트레스를 받아왔다 그런데 왜 또...글또를...? 글또 7기 활동을 하면서 글을 쓰는 일은 어려웠지만, 결과적으로 나의 작고 귀여운 블로그의 포스팅 수가 올라갔고 다른 글또분들에게 피드백을 하기 위해 다양한 글들을 읽으면서 글쓰기 방향을 잡기도 했다. 그 외에도 내가 작성한 글에 대한 칭찬의 스레드가 달리면 그날은 하..

생각 2023.02.17

DDC 2023 : DEV DAY 뒷북 후기 (feat. 긴 글 주의😅)

2023년 1월 28일 토요일에 열린 DDC 2023 DEV DAY에 참여했습니다. 인생 첫 컨퍼런스였기도 했고 개인적으로는 매우 만족해서 후기를 기록하려고 했는데 미루고 미루고 또 미루다 이제야 뒷북 후기를 기록해보려고 합니다. 28일 토요일의 제 모습인데요..? 코엑스는 왜이렇게 커서 시골쥐인 저를 힘들게 하는 걸까요? 주최 측인 멋쟁이 사자처럼에서 봉은사역에서 출발하여 컨퍼런스장까지 가는 방법을 쉽게 알려주셨음에도 불구하고 이리저리 코엑스를 구경하다 길을 잃은 탓에 한참을 두리번두리번거리면서 돌아다녔습니다 ,,ㅎㅎㅋㅋㅋㅋㅋㅋ 드 ! 디 ! 어 발견 ! 왜 이렇게 구석에 숨어있었던건지 안도의 한숨과 함께 입장 ~.~ 컨퍼런스장에 들어가기 위해서는 안내자 분들에게 이 팔찌를 슬쩍 보여드려야 입장이 가능..

생각 2023.02.11
반응형