본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

IT기술/CS(ComputerScience)37

[CS] 직렬화(Serializable) 이해하기 직렬화(serialize)란? 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다.오브젝트를 직렬화하는 과정은 오브젝트를 마샬링한다고도 한다조금 더 쉽게 풀어보면, Object 또는 Data를 바이트 스트림(stream of bytes) 형태로 연속전인(serial) 데이터로 변환하는 것을 직렬화(serialize) 라고 한다.그 반대 개념인 역직렬화는(Deserialize)는 바이트로 변환된 데이터를 원래대로 Object 또는 Data로 변환하는 기술이다. [ 바이트 스트림 이란? ]스트림은 클라이언트나 서버 간에 출발지 목적지로 입출력하기 위한 데이터가 흐르는 통로를 말한다.자바는 스트림의 기.. 2024. 10. 2.
[CS] 인증 / 비인증 결제 결제 모듈을 가지고 개발하는데, 인증인지 비인증인지 구분해달라는 요청이 왔다.혹시 이게 고유적인 의미를 가지는 개념인지 궁금해서 검색 해 봤는데, 의미가 있는 개념이어서 정리해둔다.- 인증 결제 ( 본인인증결제)- 비인증 결제 (초회 등록 후 자동 결제)크게 이런 구분이 된다.인증결제 (본인인증결제 3DS)- 본인인증결제(3DS) 서비스​3DS는 3-Domain Security의 약자로, 카드 결제의 주축이 되는 세 주체가 (발급사 영역, 상호 운영 영역, 매입사 영역) 카드와 카드 사용자의 진위성을 인증하는 안전 결제 수단.매 순간 결제가 수행 될 때 마다 인증하는 절차가 들어가다보니, ​우호적 사기, 계정 해킹, 피싱 등을 근본적으로 방지할 수 있음.PG사를 통한 결제가 대표적인 예시비인증결제 - 카.. 2024. 9. 10.
[CS] UML 정리하기, 개발 과정에서 필요한 모델링 UML(Unified Modeling Language)은 소프트웨어 개발 과정에서 시스템의 구조와 행동을 시각적으로 표현하기 위한 표준 모델링 언어입니다. 다양한 UML 다이어그램이 있으며, 각각은 시스템의 특정 측면을 나타내는 데 사용됩니다.업무를 진행하면서 기본적으로 아는 기준에서 소통하기 위해선 알아 두는게 좋다고 생각되어 이렇게 정리 해보려 합니다.주요 UML 다이어그램의 종류는 다음과 같습니다:클래스 다이어그램 (Class Diagram)유스케이스 다이어그램(Use Case Diagram)시퀀스 다이어그램 (Sequence Diagram)상태 다이어그램(State Diagram)활동 다이어그램(Activity Diagram)컴포넌트 다이어그램(Component Diagram)배치 다이어그램(De.. 2024. 6. 18.
[CS] 폭포수(waterfall) 방법론과 에자일(agile) 방법론 언제인지는 정확히 모르겠으나 갑자기 이런 단어가 생기고, 사용되기 시작한 것 같습니다.이걸 늦게 접하던 빨리 접하던 상관은 없는 것 같습니다.제 입장에선 이런 개념 없이도 도메인 주도 개발을 어느정도 적용하고 있었기 때문입니다.다만 개발방법론 적인 측면에서 DDD라는 용어가 누가 왜 정의했고, 기술적인 영역으로 사용하는 부분에 대해 많은 생각을 하게 되었습니다.이런 것 까지 알고 따라야 하나... 누군가 시도하는 것을 계속 따라해야 할까?... 이런 것을 계속 공부해야 하나... 쉽지 않은 것 같습니다.그저 한번 쯤 해볼만 한, 그리고 다른 사람들과 대화가 통하기 위해서? 알아 두기는 해야 할 기술 같습니다.Domain 주도 설계 라고 하는데... "소프트웨어 개발 접근 방법"으로 정의되고 있습니다.방법.. 2024. 5. 29.
[MSA] 마이크로 서비스 아키텍처, 설계 전략, 사례 지난 번에 마이크로 서비스 아키텍처(MSA, Micro Service Architecture)가 무엇인지 정의를 정리 해봤습니다.이번엔 MSA를 활용할 수 있는 전략에 대해 정리 해보려 합니다.MSA 기반으로 설계하는 이유는 운영을 잘 하기 위해서 라고 생각합니다.구체적으로 장애에 치명적인 타격을 예방하고, 확장의 유연성을 고려하며, 운영하는데 인력을 효과적으로 분배하기 위함 이라 생각합니다.이렇게 하려면 어떤 식으로 MSA를 구상해야 할지 한번 고민해보려 합니다.특히 대규모 서비스를 담당하는데 모노리틱 보단 MSA 기반 설계가 유리했습니다.대규모 서비스를 제공하는 기업에선 MSA를 어떤 서비스에 적용했는지 AI로 확인해습니다.Amazon:Amazon은 수많은 마이크로 서비스를 사용하여 규모가 큰 e-c.. 2024. 5. 28.
[MSA] 마이크로서비스 아키텍처, 모노리틱 아키텍처 이해하기 소프트웨어 아키텍처 중에서 크게 두가지 분류가 있습니다.- 모노리틱 아키텍처(Monolithic Architecture)하나의 어플리케이션 안에 모든 소스가 들어있는 구조입니다.(뷰, 컨트롤러, db접근, 핵심로직 등)어플리케이션을 실행파일로 말아서 내보내면, 독립적으로 바로 실행 가능한 어플리케이션이 됩니다.다른 어플리케이션과 연동 없이 단독적으로 수행도 가능합니다.특징 및 장점간편한 개발 : 전체 애플리케이션을 하나로 처리하기 때문에, 개발툴 등에서 하나의 프로젝트로 개발하면 됩니다.간편한 배포 : 테스트 및 배포도 단일 어플리케이션 하나로 수행합니다. 상대적으로 단순합니다.운영 측면에서 다운 되더라도 큰 영향이 없거나 다른 서비스에 영향이 가도 문제가 덜한 프로그램 이라면 유리할 수 있습니다.단점긴.. 2024. 5. 28.
OSS/BSS 이게 무엇인가? - BSS(business support system, 업무 지원 시스템) 통신사가 고객이 가입할 때 고객으로 부터 고객 정보와 요금을 지급받고, 이런 정보를 처리하여 OSS로 넘겨주는 것이 BSS다.즉, 통신서비스 제공자가 고객에게 서비스를 제공하기 위해 사용하는 시스템, 고객을 상대하는 시스템이다. 고객의 지불, 고객정보 등록 시스템이 있으며, 안정적인 처리가 중요하다. 그러므로 ACID(원자성, 일관성, 독립성, 지속성)을 만족하기 위해 RDB를 사용하며,  대용량 데이터, 빅데이터를 사용하기 위해 NoSql을 사용한다.- OSS(Operation Support System, 운용 지원 시스템)통신 서비스 제공자가 자체 네트워크를 관리하기 위해 사용하는 시스템 (네트워크 재고, 네트워크 구성, 장애.. 2024. 5. 13.
콜백 함수란 무엇인가 프로그래밍에서 콜백(callback) 또는 콜백 함수(callback function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.일반적으로 콜백수신 코드로 콜백 코드(함수)를 전달할 때는 콜백 함수의 포인터 (핸들), 서브루틴 또는 람다함수의 형태로 넘겨준다. 콜백수신 코드는 실행하는 동안에 넘겨받은 콜백 코드를 필요에 따라 호출하고 다른 작업을 실행하는 경우도 있다. 다른 방식으로는 콜백수신 코드는 넘겨받은 콜백 함수를 '핸들러'로서 등록하고, 콜백수신 함수의 동작 중 어떠한 반응의 일부로서 나중에 호출할 때 사용할 수도 있다 (비동기 콜백).콜백은 폴리모피즘과 제네릭프로그래밍의 .. 2024. 5. 9.
[CS] java에서 String이 불변 객체인 이유 자바에서 String 문자열은 불변 객체입니다. String으로 선언한 변수가 변하지 않는 다는 뜻에서 불변이 붙은것은 아닙니다. String a = "num1"; a = "num2"; "num1"이라는 String 객체가 만들어지고 이를 a가 참조하는 식으로 내부에서 과정이 이루어집니다. a="num1"을 선언하며 "num1"이 상수풀에 없으면 num1을 새로 만들고 a로 참조하도록 하는 것입니다. 다만 a ="num2" 를 수행하며 값이 변경되는 게 아닌 "num2"라는 새로운 String 객체를 만들고 타입 a에 참조시키는 것입니다. 왜 이런 구조를 띠는걸까요? String 객체는 heap 메모리가 아닌 상수풀에 등록되고 참조를 반환합니다. 이렇게 설계된 이유는 String은 상당히 자주쓰여서 상수.. 2024. 4. 15.
[CS] SOP CORS 웹 개발에서 알아두면 좋은 내용 예전에는 출처(프로토콜, 호스트명, 포트)가 다르더라도 ajax 통신을 수행할 때 요청과 응답이 문제없이 가능했습니다.하지만 이러한 방식에는 보안에 취약하다는 문제가 생길 수 있습니다.Cross-Site Scripting (XSS)1. 사용자의 쿠키 정보를 가져오는 자바스크립트 코드(악성코드)를 포함한 게시글을 작성한다.2. 어떤 사용자가 로그인하면 쿠키에 그 정보가 저장됨3. 해커가 작성해둔 게시글을 사용자가 클릭했을 때 악성코드가 작동4. 쿠키에 저장된 사용자 정보가 해커의 웹사이트에 전송됨Cross-site request forgery (CSRF) - 사이트 간 요청 위조1. 사용자가 보안이 취약한 서비스에 로그인 한다.2. 사용자 정보가 쿠키에 저장된다.3. 해커가 만든 피싱 사이트에 접속한다. .. 2024. 4. 11.
[CS] 동기와 비동기의 차이, 멀티스레드와 비동기의 차이 동시성 이슈를 해결하는 과정에서 개념을 정리해볼 필요가 있어 정리하게 되었습니다. 동기와 비동기, 이게 무슨 이야기인지 정리해보려 합니다. synchronize (동기화) 란 무엇인가?? 현재 상태를 적용하는 것을 말하는 동기화, 내가 무언가 조치를 취했다면, 해당 내용이 반영되어야 합니다. 이를 위해 동기화를 말하는 것이며, 동시성을 이야기도 합니다. 동기화를 지원 이유는 공유자원을 다루면서 정합성이 깨지는 것을 방지하기 위해 사용하기도 합니다. 그럼 동기는 무엇인가요? 위의 동기화 와는 다르게, 프로그래밍에서 작업을 처리하는 방식에 대해 정할 때, 동기적으로 처리 또는 비동기적으로 처리 라고 이야기 할 수 있습니다. 동기화와 이름이 비슷하지만 구분해야 하는 개념이기에 먼저 적어봤습니다. 동기(Sync.. 2024. 3. 21.
웹 서버와 WAS(Web Application Server)의 차이점이 뭘까? 웹 서버와 WAS(Web Application Server)를 같이 연동해서 사용한 적이 있습니다. 성능의 향상을 위해 라는 이유로 둘을 동시에 연동해서 사용했는데 이번에 이 관련해서 정리해보려 합니다. 웹 서버(web server)는 HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말합니다. 주로 정적 컨텐츠를 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받거나 처리합니다. 동적 컨테츠가 필요할 때, WAS에 요청을 전달하여 처리한 결과를 클라이언트에게 전달합니다. 웹 애플리케이션 서버(Web Application Server, WAS)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공합니다. 주로 동.. 2024. 2. 8.