전체 글

전체 글

    [네트워크] OSI 7 계층, OSI 참조모델

    네트워크 통신을 논할때 반드시 나오는 개념이죠! 오늘은 OSI 계층에 대해 알아보겠습니다! OSI 참조모델이란? OSI는 Open System Interconnection 의 줄임말로, OSI 참조모델은 ISO(국제표준화기구)에서 다른 기종간의 원활한 통신을 위해 개발됐습니다. 1960~70년대에는 각 IT업체가 자신들의 컴퓨터끼리 네트워크를 사용해서 데이터를 통신했습니다. 이는 한 회사내부에서는 가능했지만, 다른 회사와는 규격이 맞지않아 호환이 되지 않는 경우가 생겼죠 ㅠ. 그래서 데이터 통신의 규격과 프로토콜(규칙)을 정해야했고 ISO에서 OSI 참조 모델을 만들어서 모든 네트워크 통신을 표준화시키게 됩니다 OSI 7계층 그리고 이 OSI는 7 계층으로 나뉘어져있는데 ISO에서 네트워크 통신이 일어나..

    [네트워크] HTTP란?

    정말 많이보고 주소창에 입력도 많이한 HTTP. 오늘은 이 HTTP에 대해서 알아보겠습니다! HTTP란? HTTP는 HyperText Transfer Protocol의 줄임말입니다. 직역을 하면 하이퍼텍스트 전송 프로토콜이죠. 하이퍼텍스트(HyperText)가 뭐에요? 기존의 책에서 보이는 글처럼 선형적인 텍스트가 아니라, 문장이나 단어 등이 링크를 통해 서로 연결된 형태의 비선형 텍스트를 뜻합니다. 일반 글 뿐만이 아니라 하이퍼텍스트 문서는 사용자가 원하는대로 쉽게 이동할 수 있도록 하이퍼링크(하이퍼텍스트 문서끼리 연결이 되는 링크)를 포함할 수 있습니다. 하이퍼텍스트의 대표적인 예시는 HTML 문서입니다. 따라서 다시한번 뜻을 살펴보면 이 하이퍼텍스트 문서(HTML)을 전송하기 위한 프로토콜이라는 거..

    [Kafka] 카프카(Apache Kafka)란?

    아파치 카프카(Apache Kafka)는 간단하게 카프카라고도 불리며, 실시간으로 처리할 데이터가 많은 현대의 서비스에서 자주 사용되는 기술인 것 같습니다. 아마 한번쯤 이름은 들어보셨을 것 같아요. 자 그럼 바로 한번 알아볼까요?! 카프카(Kafka)란? 카프카는 링크드인(LinkedIn)에서 처음 개발된 분산 메시징 시스템입니다! 네 우리가 아는 그 인맥 소셜 네트워크 서비스입니다! 왜 개발이 되었나요? 링크드인은 소셜 네트워크 서비스이다보니 서비스 특성상 많은 데이터의 생성/적재가 필요했습니다. 따라서 데이터를 생성하는 소스 애플리케이션과 데이터가 최종 적재되는 타겟 애플리케이션이 연결되는 파이프라인이 필요했습니다. 초기운영시에는 단방향 통신을 통해 파이프라인을 연동했고 그렇게 복잡하지 않았지만....

    [Elastic Stack] Elasticsearch 란?

    엄청나게 대량데이터를 빠르게 검색하는 것이 필요할때, Elasticsearch(ES)를 한번쯤 들어보신적이 있으실 것 같습니다. 오늘은 이 Elasticsearch에 대해 간단하게 소개를 해보려고합니다. Elasticsearch 정의 Elasticsearch는 Elastic사에서 만든 Apache Lucene(아파치 루씬)기반의 java 오픈소스 분산 검색엔진입니다. 검색엔진인 만큼 방대한 양의 데이터를 신속하게, 거의 실시간급으로 으로 저장, 검색, 분석할 수 있습니다. Elasticsearch 구조 클러스터(Cluster) ES는 클러스터(Cluster)로 관리가 됩니다. 따라서 클러스터는 ES에서 가장 큰 시스템 단위를 의미하며, 이 클러스터는 최소 한개이상의 노드로 이루어져있습니다. 서로 다른 클..

    [k8s] 쿠버네티스(kubernates, k8s)란?

    아마 이름은 많이 들어보셨을거같아요. 제가 처음에 들었을 때는 굉장히 세련되보이면서 엄청나게 어려울것같은 이름이라는 생각이 들었습니다. 저도 궁금해서 여러번 찾아보았지만, 아직도 정확히 내부에서 무슨일이 일어나는지 소스코드까지는 감히 이해하지 못했습니다 ㅠㅡㅜ 오늘은 그래서 엄청 깊은 코드레벨의 지식보다는, 쿠버네티스가 무엇이고 왜 탄생하게되었는지 얕고 넓은 개념으로 알아보도록 하겠습니다. 쿠버네티스에 대해 설명하려면, 반드시 먼저 알아야하는 개념이 있습니다. 바로 컨테이너 오케스트레이션 인데요. 왜냐면 쿠버네티스는 컨테이너 오케스트레이션의 한 종류이자 가장 표준같은 존재이기 때문입니다. 자 바로 알아볼까요? 컨테이너 오케스트레이션 지난시간에 이 글에서 도커를 이용한 컨테이너 가상화에 대해서 알아보았었습..

    [기술] 가상화(Virtualization)란?

    가상화(Virtualization)란? 하나의 물리적 서버에서 여러 운영체제와 애플리케이션을 실행할 수 있도록 하는 소프트웨어 기술입니다. 여러분은 만약 이런 상황에서 어떻게 하실건가요? 내부가 파란색인 락커와 빨간색인 락커가 있습니다. 그리고 물건이 여러가지가 있는데 파란물건은 내부가 파란색일때만 들어갈 수 있고 빨간물건도 내부가 빨간색일때만 들어갈 수 있습니다. 현재 빨간색 락커는 꽉찼는데 파란색 락커는 20%정도 밖에 안찼네요. 이런.. 빨간색 물건을 더 넣어야하는데.. 새로운 빨간색 락커를 빌려야할까요..? 파란색 락커를 반으로 나누고 반만 내부를 빨간색으로 칠해버리면 안될까요? 비유가 와닿을지는 모르겠지만... ㅠㅡㅜ 이게 바로 가상화(Virtualization)가 각광받기 시작한 이유입니다. ..

    [Docker] 도커(Docker)란? 도커의 역사

    도커(Docker)~~~ Java, Spring 등의 기존 기술들에 비하면 상대적으로 최신기술이라고 볼 수 있는데요. 직접 사용해보지 않으셨더라도 한번쯤 이름은 들어보셨을 것 같아요. 그럼 오늘은 도커에 대해 알아보겠습니다~! 도커의 탄생 도커는 2013년 3월 산타클라라에서 열린 PyCon에서 Solomon Hykes가 "리눅스 컨테이너의 미래(The Future of Linux Container)" 라는 제목으로 세션을 발표하면서 알려지게 되었습니다. Solomon Hykes는 dotCloud라는 PaaS 기업의 창시자였고 사내 프로젝트였던 도커를 공개적으로 발표를 한것이었죠. 발표 이후 도커는 엄청난 인기를 얻게 되었습니다. 그 후 2013년 10월에 회사명 자체를 Docker Inc로 바꾸고 20..

    [Spring] Spring AOP 프록시 - JDK Proxy(JDK Dynamic Proxy), CGLib

    [Spring] AOP - 관점 지향 프로그래밍 이란? 글에서 AOP에 대해 설명을 했었죠~! 혹시 못보셨다면 먼저 보고오시기 바랍니다! 다시 한번 짧게 요약하면, AOP(관점지향 프로그래밍)란 OOP를 보완하는 개념으로, 흩어진 관심사(cross-cutting concern)를 모듈화시킨 관점(Aspect)를 생성하여, 프록시 패턴(Proxy pattern)을 통해 비즈니스 로직에 영향없이 관점을 적용할 수 있는 그런 기법이었죠. ** 너무 한문장에 우겨넣긴했네요 ㅠ 혹시 이 문장이 이해가 안되신다면 여기를 꼭 먼저 보고와주세요! 자 오늘은 여기서 저 프록시(Proxy)에 대해서 알아볼겁니다. 이미 저 글에서 프록시 패턴에 대해 설명해주지 않았나요?? 라고 하신다면 디자인 패턴의 관점에서 프록시 패턴의..

    [Redis] Redis Serializer 종류 (대표 3가지)

    이전 글에서 Redis와 Redis의 자료구조에 대해서 다뤄보았습니다. 데이터가 저장되는 여러가지 자료구조가 있었지만 아무래도 검색속도는 key/value 로 저장해서 불러오는게 가장 빠르겠죠? 하지만 우리가 개발을 하다보면 항상 단순한 하나의 value만 저장하지는 않겠죠, 아마 높은확률로 객체를 저장해야하는 순간이 오게될것입니다. 어? 저번에 자료구조중에 Hash로 저장하면 하나의 key 에 여러개 field/value로 저장할 수 있다고했죠? 그걸로 객체를 저장하면 안되나요? 가능은 합니다! 하지만 Hash 구조로 객체 저장시 실질적으로 저장된 데이터를 보면 결국 여러개의 key/value 데이터가 존재한다는 것을 확인하실 수 있습니다. 이 때문에 단순 String 구조보다 상대적으로 많은 메모리를..

    [JPA] @OneToMany 단방향을 사용하면 안되는 이유

    [JPA] @ManyToOne, @OneToMany 뭘 써야할까? 편에서 단방향, 양방향 맵핑에 대해서 다뤘었죠! 그리고 분명 단방향만으로 충분한 경우에는 굳이 양방향 맵핑을 안하는게 좋다고도 했는데... 사실 단방향 중에 @OneToMany 맵핑으로만 이루어진 단방향 맵핑은 사용하지 않는게 좋습니다. 뭐야?!? 단방향 쓰라더니 왜 또 쓰지 말라는거야 ㅡㅡ 라고 하실 수도 있지만.. 여기에는 당연히 이유가 있습니다. 어떤 문제가 있는지, 해결방법은 없는지 지금부터 한번 알아보겠습니다! @OneToMany 단방향 세팅 우선 Classroom, Student로 @OneToMany 단방향 맵핑을 구현해보겠습니다. // Classroom 엔티티 @NoArgsConstructor @Getter @Entity pu..