본문 바로가기
반응형

개발용어20

docker란?, 도커 구조 Docker(도커)란? Docker란 한마디로 표현하면 경량화된 VM(virtual machine) 기술이라고 칭할 수 있습니다. Docker는 OS 수준의 가상화를 사용하여, 컨테이너라는 패키지로 소프트웨어를 실행할 수 있게하는 플랫폼 집합입니다. 컨테이너를 호스트하는 소프트웨어는 Docker Engine이라고 불립니다. Docker는 2013년에 처음 출시되었으며, Docker, Inc.에서 개발하였습니다. 도커는 애플리케이션이 격리된 다른 환경에서 효율적으로 작동할 수 있도록 합니다. Docker 구동 구조 Docker는 아래와 같은 구조로 되어 있습니다. Container App A, B, C와 같이 실행하려는 소프트웨어와 Bins/Libs와 같이 실행하려는 소프트웨어를 위한 라이브러리및 필요한 .. 2023. 11. 14.
gRPC란, protobuf란, Java gRPC 예제 코드, grpc단점, grpc java code example gRPC란, protobuf란, Java gRPC 예제 코드, grpc단점, grpc java code example 최근 Micro service architecture 프로젝트를 진행하면서, 속도 향상에 대한 고민을 하다 gRPC에 대해 알아보았습니다. 1. gRPC란 2. protobuf란 3. gRPC 예제코드 4. gRPC VS REST 속도비교 5. gRPC 장/단점 1. gRPC란? 한줄요약 : 오픈소스 원격 프로시저 호출(*RPC) 방식중 하나. * RPC : 함수가 실행프로그램의 원격위치에 있어도 동일한 코드를 이용하여 함수를 실행하는 기술 개발한곳 : 구글 특징: 1) HTTP/2 사용 --> HTTP/1보다 빠르다. 2) 인터페이스 정의 언어로 프로토콜 버퍼 사용 (protobuf를 .. 2023. 6. 5.
DIME이란, DIME 예제 코드 Java, DIME 예제 코드 C#, MIME DIME 비교 DIME이란, DIME 예제 코드 Java, DIME 예제 코드 C#, MIME DIME 비교 DIME이란? DIME은 웹 서비스/SOAP를 통해 파일을 전송하기 위한 규약입니다. DIME은 Direct Internet Message Encapsulation의 약자입니다. DIME 인터넷을 통한 바이너리 및 캡슐화된 데이터의 스트리밍을 위해 마이크로소프트가 2000년대 초에 제안한 인터넷 표준이었습니다만 표준으로 채택되지는 못하였습니다. 표준이 아니더라도 MS 외의 소프트웨어에도 Java 측에서도 DIME을 구현한 사례는 존재합니다. (ex Apach AXIS) 하지만 표준이 아니게 되어서인지, 보안상이유 때문인지 금방 지원하지 않게 되었습니다. (apache AXIS 2.x 버전에서는 지원불가, 1.x.. 2022. 10. 16.
디자인패턴 - 싱글턴 패턴, singleton pattern 디자인패턴 - 싱글턴 패턴 싱글턴패턴이란? 싱글턴 패턴은 디자인패턴에서 가장 단순한 생성패턴 입니다. 이 패턴은 단일 객체만 생성되도록 하면서 객체를 생성하는 역할을 하는 단일 클래스를 포함합니다. 이 클래스는 클래스의 객체를 인스턴스화할 필요 없이, 직접 액세스할 수 있는 유일한 객체에 액세스할 수 있는 방법을 제공합니다. 싱글턴패턴 UML 싱글턴 패턴 UML은 아래와 같습니다. 내부에 Singleton의 인스턴스가 있으며, 생성자는 private하게, getInstance 메소드로 instance를 리턴하는 패턴입니다. instance는 Singleton 클래스에서 단 하나만 존재합니다. @startuml skinparam classAttributeIconSize 0 class Singleton{ -.. 2022. 10. 15.
SOLID 원칙 - 의존성 역전 원칙, DIP (Dependency Inversion Principle) SOLID 원칙 - 의존성 역전 원칙, DIP (Dependency Inversion Principle) 의존성 역전 원칙이란? (DIP, Dependency Inversion Principle) 의존성 역전 원칙은 소프트웨어 모듈을 느슨하게 결합하기 위한 구체적인 방법론 입니다. 고수준 모듈에서 저수준 모듈로 설정된 종래의 종속 관계가 역전되어, 저수준의 모듈 구현 세부 사항과 무관하게 고수준 모듈을 구현할 수 있도록 하는 원칙입니다. 의존성 역전 원칙을 잘 지키기 위해서는 "저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존하도록 하며, 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 된다" 준수하면 됩니다. 좀 더 쉽게 말씀드리면 "자신보다 변하기 쉬운 것에 의존하지 않도록 한다"라고 이해하시.. 2022. 10. 15.
CSRF란, CSRF 동작원리, CSRF 방어방법 CSRF란, CSRF 동작원리, CSRF 방어방법 CSRF란 CSRF란, Cross Site Request Forgery의 약자로, 한글 뜻으로는 사이트간 요청 위조를 뜻합니다. CSRF는 웹 보안 취약점의 일종이며, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(데이터 수정, 삭제, 등록 등) 을 특정 웹사이트에 요청하게 하는 공격입니다. 예를 들어, 피해자의 전자 메일 주소를 변경하거나 암호를 변경하거나 자금이체를 하는 등의 동작을 수행하게 할 수 있습니다. 특성에 따라, 공격자는 사용자의 계정에 대한 완전한 제어권을 얻을 수 있을 수도 있습니다. CSRF 동작원리 CSRF가 성공하려면, 아래 3가지 조건이 만족되어야 합니다. 1. 사용자는 보안이 취약한 서버로부터 이미 로그인되어 있는 상태.. 2022. 8. 3.
MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC MVC 패턴이란 MVC 패턴이란 Model(모델), View(뷰), Controller(컨트롤러)의 앞글자를 따서 이름지어진 디자인 패턴입니다. 각 컴포넌트는 아래와 같은 역할을 갖고 있습니다. 모델(Model): 애플리케이션 데이터만을 포함하고, 데이터 조작하는 로직을 포함하지 않습니다. 뷰(View) : 모델(데이터)를 사용자에게 표시합니다. 컨트롤러 (Controller): 뷰와 모델 사이에 컨트롤러가 있습니다. 뷰(또는 다른 외부 소스)에 의해 변경요청된 이벤트들을 감지하고, 이러한 이벤트들에 대한 적절한 로직을 실행합니다. 세 가지 구성요소의 관계를 그림으로 표현하면 다음과 같이 표현할 수 있습니다. @star.. 2022. 7. 6.
code bad smell - 중첩 if문 code bad smell - 중첩 if문 if문의 중첩은 잘만 쓴다면 나쁘지 않습니다. 하지만 대부분의 코드의 경우에는 중첩이 될수록 흐름을 읽기 힘들기 때문에 나쁜 코드가 많습니다. 수많은 if와 else가 있으면 어떤 조건에 대한 else인지 알 수 힘들기도 합니다. 게다가, 유지보수할 경우에는 수정하기도 어려움이 생깁니다. 예를 들어 아래 코드를 보았을때, "error" 라는 글씨가 출력되기 위한 조건이 무엇일까요? function check(first, second, third, fourth){ if( first == true ) { if( second == true ) { if( third == true ) { if( fourth == true ) { return 'OK'; } else { r.. 2022. 6. 27.
FTP - passive 모드/ active 모드 차이점 ftp - passive 모드/ active 모드 차이점 최근 ftp 를 사용하는 레거시 시스템에서의 방화벽 이슈로 정상동작 하지 않는 문제가 있었습니다. 이에 대해 ftp 통신방법인 passive 모드와 active 모드에 대해 알아보겠습니다. FTP (File Transfer Protocol)란? FTP(File Transfer Protocol)는 TCP/IP(Transmission Control Protocol/Internet Protocol) 네트워크에서 컴퓨터 간에 파일을 통신하고 전송하는 데 사용되는 통신규약(protocol) 입니다. 권한이 부여된 사용자는 파일 전송 프로토콜 서버(FTP 호스트/사이트라고도 함)에서 파일을 수신하고, 전송할 수 있습니다. 한마디로, 인터넷에서 파일전송을 위한.. 2022. 5. 23.
SOLID 원칙 - 인터페이스 분리 원칙, ISP (Interface Segregation Principle) SOLID 원칙 - 인터페이스 분리 원칙, ISP (Interface Segregation Principle) 인터페이스 분리 원칙이란? (ISP, Interface Segregation Principle) 인터페이스 분리 원칙은 "클라이언트는 자신이 사용하지 않는 메소드에는 의존하지 않아야된다"라는 의미로 사용되는 원칙입니다. 인터페이스나, 상속을 하였는데, 사용하지 않는 메소드가 있다면 분리를 해줘야 한다는 원칙입니다. 이 원칙이 지켜지면 무슨 이점이 있는지 바로 코드 예제로 살표보겠습니다. ISP 를 준수하지 않는 코드의 예 interface Machine{ string name; int showCurrentTime(); int playMP3(string path); int calculateAdd(.. 2022. 5. 11.
SOLID 원칙 - 리스코프 치환 원칙, LSP (Liskov Substitution Principle) SOLID 원칙 - 리스코프 치환 원칙, LSP (Liskov Substitution Principle) 리스코프 치환 원칙이란? (리스코프 치환 원칙, LSP ,Liskov Substitution Principle) 리스 코프 치환 원칙은 "특정 메소드가 상위타입을 인자로 사용할때, 그 타입의 하위 타입을 대입했을때도 정상동작해야한다"라는 내용입니다. 리스코프 치환 원리는 바바라 리스코프가 1987년 컨퍼런스 기조연설 《데이터 추상화》에서 처음 소개한 내용입니다. 리스코프 치환 원칙의 수학적 정의는 다음과 같습니다. "Φ(x)가 T형의 객체 x에 대해 증명 가능한 성질이라고 하자. 그러면 S가 T형의 하위 유형인 S형의 객체 y에 대해서는 Φ(y)가 참이어야 한다." 예를 들어서 설명을 해볼까요? "Φ.. 2022. 5. 9.
SOLID 원칙 - 개방폐쇄원칙, OCP (Open Closed Principle) SOLID 원칙 - 개방폐쇄원칙, OCP (Open Closed Principle) 개방폐쇄원칙 원칙이란? (개방폐쇄원칙, OCP ,Open Closed Principle) 개방형 폐쇄 원칙은 객체 지향 설계의 5가지 SOLID 원칙 중 하나이다. 객체 지향 프로그래밍에서 개방폐쇄의 원리는 "소프트웨어 엔티티(클래스, 모듈, 기능 등)는 확장을 위해 개방되어야 하지만 수정에 대해서는 폐쇄되어야 한다" 라는 원칙입니다. 이 원칙을 지킨다면, 소스 코드를 수정하지 않고 동작을 확장하도록 허용할 수 있습니다. 또한, 기능 변경을 하려면 많은 곳에서 코드를 변경하지 않고도 할 수 있어야 한다는 것을 의미합니다. 이상적으로는 새로운 코드를 추가하고, 오래된 코드를 거의 또는 전혀 변경하지 않아도 새로운 기능을 구.. 2022. 5. 7.
반응형