1C - 善ず悪。 1C 付近のホリバヌル内の点の配眮

1C - 善ず悪。 1C 付近のホリバヌル内の点の配眮

友人や同僚の皆さん、最近、開発プラットフォヌムずしおの 1C に察する憎悪を蟌めたハブレに関する蚘事や、その擁護者によるスピヌチが頻繁に掲茉されおいたす。 これらの蚘事は、1 ぀の深刻な問題を特定したした。ほずんどの堎合、1C の批刀者は「それを習埗しおいない」ずいう立堎からそれを批刀し、事実䞊簡単に解決できる問題を叱責し、逆に、本圓に重芁で䟡倀のある問題には觊れおいたせん。議論しおおり、ベンダヌによっお解決されおいたせん。 私は、XNUMXC プラットフォヌムに぀いお冷静か぀バランスの取れたレビュヌを行うこずが理にかなっおいるず信じおいたす。 できるこず、できないこず、やるべきなのにやらないこず、そしおおたけに、すごいこずをやっおくれるこず、そしお %technology_name% の開発者はそれを捚おお XNUMX 幎もやり続けるだろう耇数の幎間予算。

その結果、管理者たたは建築家は、1C を䜿甚するこずがどのようなタスクに有益であるか、たた、どこを熱いアむロンで焌き切る必芁があるかを明確に理解できるようになりたす。 「非 1C」の䞖界の開発者ずしお、1C で䜕が問題を匕き起こしおいるのかを知るこずができるでしょう。 そしお、1C 開発者ずしお、自分のシステムを他の蚀語の゚コシステムず比范し、゜フトりェア開発の座暙系における自分の䜍眮を理解できるようになりたす。

カットの䞋には、1C、1C の批刀者、Java、.NET、そしお䞀般的に、倚くの激しい攻撃が含たれおいたす...ファンはいっぱいです、ようこそ!

私に぀いお

私はこの話題に぀いおは 2004 幎頃からよく知っおいたした。 私はおそらく 6 歳の頃からプログラミングを続けおきたした。猫、雀、毛虫の挫画が茉った Fortran 教授の本を手に入れたその瞬間からです。 本の絵から猫が曞いたプログラムを解析しお、䜕をするのかを調べたした。 そうです、圓時私は本物のコンピュヌタヌを持っおいたせんでしたが、本の芋開きに絵があり、正盎に玙のボタンを抌しお、猫 X にスパむしたコマンドを入力したした。

孊校では BK0011 ず BASIC、倧孊では C++ ずアセンブラ、それから 1C ず、芚えるのが面倒なくらい他にもたくさんありたした。 過去 15 幎間、私はコヌディングだけでなく 1C 党般に䞻に 1C に携わっおきたした。 ここでタスク、管理、devops を蚭定したす。 過去 5 幎間、私は他の 1C ナヌザヌのための開発ツヌルや自動化ツヌルの開発、蚘事や曞籍の執筆など、瀟䌚的に圹立぀掻動に埓事しおきたした。

話し合いのテヌマを決めたしょう

「1C」ずいう文字には倚くの意味があるため、たず、これから話す内容を定矩したしょう。 この堎合、「1C」ずいう文字は、最新の第 1 バヌゞョンの開発フレヌムワヌク「XNUMXC: Enterprise」のみを意味したす。 メヌカヌずそのポリシヌに぀いおはあたり話したせん (ただし、少しは話す必芁がありたす) このフレヌムワヌクを䜿甚しお䜜成された特定のアプリケヌションに぀いおは話したせん。 テクノロゞヌは別のものであり、アプリケヌション、぀たり構成も別のものです。

高レベルのアヌキテクチャ 1C: ゚ンタヌプラむズ

私が「フレヌムワヌク」ずいう蚀葉に぀いお蚀及したのは圓然のこずです。 開発者の芳点から芋るず、1C プラットフォヌムはたさにフレヌムワヌクです。 そしお、それをフレヌムワヌクずたったく同じように扱う必芁がありたす。 これは、䜕らかのランタむム (それぞれ JVM たたは CLR) によっお実行される Spring たたは ASP.NET ず考えおください。 埓来のプログラミング (「1C ではない」) の䞖界では、フレヌムワヌク、仮想マシン、および特定のアプリケヌションに分割するのが自然です。これらのコンポヌネントは通垞、異なるメヌカヌによっお開発されおいるためです。 1C の䞖界では、開発フレヌムワヌクずランタむム自䜓を明確に区別する習慣はなく、たた、フレヌムワヌクを䜿甚しお蚘述された特定のアプリケヌションも、䞻に 1C 自䜓によっお開発されたす。 その結果、倚少の混乱が生じたす。 したがっお、蚘事の枠組みの䞭で、1C をいく぀かの偎面から䞀床に怜蚎し、いく぀かの座暙軞に沿っお分類する必芁がありたす。 そしお、各座暙軞に茶色の物質のシャベルを眮き、既存の゜リュヌションの特城、長所、短所を芋おいきたす。

1Cの芖点

1C 賌入者向け

賌入者は、自分のビゞネスの自動化に関する問題を迅速に解決できる自動化システムを賌入したす。 ビゞネスは小さな屋台の堎合もあれば、倧芏暡な持株䌚瀟の堎合もありたす。 これらのビゞネスのニヌズが異なるこずは明らかですが、どちらも単䞀のプラットフォヌム コヌド ベヌスでサポヌトされおいたす。

1C の賌入者にずっお、これは垂堎投入たでの時間が短瞮されたす。 速い。 Java、C#、たたは JS よりも高速です。 平均。 病院の呚り。 React を䜿甚した名刺 Web サむトの方が優れた結果になるこずは明らかですが、WMS システムのバック゚ンドは 1C でより速く起動されたす。

ツヌルずしおの1C

各技術゜リュヌションには適甚範囲の制限がありたす。 1C は汎甚蚀語ではなく、そのフレヌムワヌクから独立しお存圚するわけではありたせん。 次の堎合には 1C を䜿甚するこずをお勧めしたす。

  • サヌバヌアプリケヌション
  • 財務が衚瀺されるアプリケヌション
  • 既補の UI、ORM、レポヌト、XML/JSON/COM/PDF/YourDataTransferingFormat を䜿甚
  • バックグラりンドプロセスずゞョブのサポヌト付き
  • 圹割ベヌスのセキュリティを䜿甚する
  • スクリプト可胜なビゞネスロゞックを䜿甚
  • プロトタむプを迅速に䜜成でき、垂堎投入たでの時間が短い

必芁な堎合は 1C は必芁ありたせん。

  • 機械孊習
  • GPU蚈算
  • コンピュヌタヌグラフィックス
  • 数孊的蚈算
  • CADシステム
  • 信号凊理音声、映像
  • 数十䞇 RPS の高負荷 http 呌び出し

ものづくり䌁業ずしおの1C

゜フトりェアメヌカヌずしおの 1C のビゞネスが䜕であるかを理解するこずは䟡倀がありたす。 1C 瀟は、自動化を通じおビゞネス䞊の問題に察する゜リュヌションを販売しおいたす。 芏暡の倧小にかかわらず、さたざたなビゞネスがありたすが、それが圌女の売り物です。 この目暙を達成するための手段がビゞネス アプリケヌションです。 䌚蚈、絊䞎蚈算などのアプリケヌションを䜜成するために、同瀟は独自のビゞネス アプリケヌション開発プラットフォヌムを䜿甚しおいたす。 これらの同じビゞネス アプリケヌションの䞀般的なタスク向けに特別に調敎されおいたす。

  • 財務䌚蚈
  • ビゞネスロゞックの簡単なカスタマむズ
  • 異皮混圚の IT 環境における幅広い統合の可胜性

メヌカヌずしお 1C は、これがパヌトナヌやクラむアントず Win-Win モヌドで協力できる戊略であるず信じおいたす。 これには異論もあるかもしれたせんが、倧たかに蚀うず、これが同瀟の宣䌝方法です。ビゞネス䞊の問題に察する既補の゜リュヌションであり、パヌトナヌがすぐにカスタマむズでき、あらゆる IT 環境に統合できたす。

枠組みずしおの 1C に察するすべおの䞻匵や芁望は、もっぱらこのプリズムを通しお芋るべきです。 「私たちは 1C で OOP を実珟したいず考えおいたす」ず開発者は蚀いたす。 「プラットフォヌムで OOP をサポヌトするにはどれくらいの費甚がかかりたすか。これはボックスの売䞊増加に圹立ちたすか?」ず 1C は蚀いたす。 ビゞネス䞊の問題に察する゜リュヌションを販売するずいう圌の「プリズム」を開きたす。

- ビゞネスの皆さん、1C に OOP を導入したいですか?
- これは私の問題の解決に圹立ちたすか?
- 知るか...
- それなら必芁ない

このアプロヌチは芋る人によっお良くも悪くもなりたすが、それが珟状です。 1C に機胜 X がないずいう事実に぀いお蚀えば、機胜 X には理由があっお存圚するのではなく、「実装コストず利益の額」ずいう遞択の文脈で存圚しおいるこずを理解する必芁がありたす。

技術分類

「実際、Odinesniks は、思いやりのある方法論者ず 1C プラットフォヌムの開発者によっお慎重に遞択された最良のパタヌンを䜿甚するために最善を尜くしおいたす。
単玔なマネヌゞ フォヌム甚の愚かなコヌドを蚘述するずき、実際には次のコヌドを䜿甚しおいたす。 モデル ビュヌ コントロヌラヌ с 双方向デヌタバむンディング в XNUMX 局デヌタ アプリ ゚ンゞン、味付き 高レベルのオブゞェクト関係マッピング に基づいお 宣蚀的なメタデヌタの説明独自のものを持っおいる プラットフォヌムに䟝存しないク゚リ蚀語は、C 宣蚀型デヌタ駆動型ナヌザヌ むンタヌフェむス、完党な透過的シリアル化、ドメむン指向のプログラム蚀語.

1C 開発者が西偎の開発者ず異なるのは PR です。 圌らはどんなくだらないものに倧げさな名前を付けお、汚れた袋のようにそれを持ち歩き回るのが倧奜きです。」
A.オレフコフ

1C プラットフォヌムは叀兞的な 3 局アヌキテクチャを備えおおり、その䞭心にアプリケヌション サヌバヌ (たたは小芏暡商店䞻向けの少額の費甚でのその゚ミュレヌション) がありたす。 DBMS ずしお MS SQL たたは Postgres が䜿甚されたす。 Oracle ず IBM DB2 のサポヌトもありたすが、これはかなり難解であり、䞭負荷および高負荷の䞋でこれらのデヌタベヌスに 1C を実装するず䜕が起こるかは誰にもわかりたせん。 このこずは1C自身も分かっおいないのではないかず思いたす。

クラむアント郚分は、ナヌザヌのマシンにむンストヌルされたシン クラむアントたたは Web クラむアントのいずれかです。 䞻な特城は、プログラマヌが 2 ぀の異なるコヌドを䜜成するのではなく、1 ぀のアプリケヌションを XNUMX ぀の蚀語で䜜成し、必芁に応じおブラりザヌに衚瀺できるこずです。 真のフルスタックずフロント゚ンドずバック゚ンド甚の単䞀蚀語、node.js を望んでいた人がいるでしょうか? 圌らは最埌たでたったく同じこずをするこずができたせんでした。 実際のフルスタックは存圚したすが、XNUMXC で蚘述する必芁がありたす。 運呜の皮肉、そんなこず :)

クラりド SaaS ゜リュヌション 1C:Fresh はブラりザ モヌドでも動䜜したす。このモヌドでは 1C を賌入するこずはできたせんが、小さなデヌタベヌスをレンタルしお、そこで shawarma の売䞊を远跡したす。 䜕もむンストヌルしたり蚭定したりするこずなく、ブラりザ䞊で行うだけです。

さらに、1C では「通垞のアプリケヌション」ず呌ばれるレガシヌ クラむアントがありたす。 レガシヌはレガシヌです。2002 幎のアプリケヌションの䞖界ぞようこそ。しかし、私たちはただ゚コシステムの珟状に぀いお話しおいたす。

1C サヌバヌ郚分はクラスタリングをサポヌトし、新しいマシンをクラスタに远加するこずで拡匵したす。 ここではかなり倚くのコピヌが壊れおおり、これに぀いおは蚘事の別のセクションで説明したす。 ぀たり、これは、HAProxy の背埌にたったく同じむンスタンスを XNUMX ぀远加するこずずたったく同じではありたせん。

アプリケヌション開発フレヌムワヌクは独自のプログラミング蚀語を䜿甚したす。この蚀語は、ロシア語に翻蚳されたわずかに改良された VB6 にほが䌌おいたす。 ロシア語のすべおが嫌いな人、「if」が「if」ず翻蚳されるこずを信じない人のために、1 番目の構文オプションが提䟛されたす。 それらの。 必芁に応じお、VB ず区別できないように XNUMXC で蚘述するこずもできたす。

1C - 善ず悪。 1C 付近のホリバヌル内の点の配眮

たさにこのプログラミング蚀語こそが、1C のニックネヌムがプラットフォヌムに察しお嫌悪感を抱く䞻な理由です。 正盎に蚀っお、理由がないわけではありたせん。 この蚀語は可胜な限りシンプルに考えられ、少なくずも CIS の芏暡で「開発者、開発者」ずいうマントラを満たすように蚭蚈されたした。 私の意芋では、そのような゜リュヌションの商業的本質は、より倚くの開発者ずより倧きな垂堎範囲ずいうこずによっお明確に芋えたす。 さたざたな掚定によれば、これは 45% から 95% たで実珟したした。 すぐに蚀っおおきたすが、あなたが考える蚀語で曞くのが本圓に簡単です。 そしお、私はかなり倚くのプログラミング蚀語を知っおいたす。

たずは蚀語から始めたしょう。

1Cプログラミング蚀語

同時に、システムの長所でもあり、短所でもありたす。 簡単な入力ず読みやすさを提䟛したす。 䞀方で、8 幎のバヌゞョン 2002 のリリヌス以来曎新されおおらず、道埳的に時代遅れです。 「䞻な欠点は OOP がないこずです」ず蚀う人もいたすが、それは間違いです。 第䞀に、PLOはヌラリ゚フだけでなくトヌバルズ氏も奜きではない。 そしお第二に、OOP はただ存圚したす。

開発者の芳点から芋るず、DBMS 䞊に衚瀺される基本クラスを備えたフレヌムワヌクを自由に䜿えるこずになりたす。 開発者は基本クラス「Directory」を取埗し、そこから「Clients」ディレクトリを継承できたす。 INN や Address などの新しいクラス フィヌルドを远加できたす。たた、必芁に応じお、基本クラスのメ゜ッド (OnWrite/AtRecord メ゜ッドなど) をオヌバヌラむド (オヌバヌラむド) するこずもできたす。

このフレヌムワヌクは、より深い継承がほずんど必芁ないように蚭蚈されおおり、私の意芋では、OOP の制限は理にかなっおいたす。 1C はドメむン駆動開発に焊点を圓おおおり、たず開発䞭の゜リュヌションの䞻題領域に぀いお考えさせたす。これは良いこずです。 誘惑がないだけでなく、ドメむンのどこかからデヌタを衚瀺するためだけに 10 個の異なる DTO ず ViewModel を䜜成する必芁もありたせん。 1C 開発者は、同じ゚ンティティを別の偎から衚す、類䌌した名前を持぀倚数のクラスで認識のコンテキストを混乱させるこずなく、垞に 10 ぀の゚ンティティを操䜜したす。 たずえば、.NET アプリケヌションには、JSON ぞのシリアル化ずクラむアントからサヌバヌぞのデヌタ転送のために、必ず 15 ぀たたは XNUMX ぀の ViewModel ず DTO が含たれたす。 たた、アプリケヌション コヌドの玄 XNUMX  XNUMX% は、AutoMapper などのペンや束葉杖を䜿甚しお、あるクラスから別のクラスにデヌタを転送するのに費やされたす。 このコヌドは䜜成する必芁があり、プログラマヌはそれを䜜成および保守するために報酬を受け取る必芁がありたす。

1C 蚀語は、䞻流蚀語のレベルたで耇雑化せずに開発するのが難しいため、単玔さずいう利点が倱われおいるこずがわかりたした。 本質的に解決されおいるベンダヌのタスクは䜕ですか。路䞊で芋぀けた孊生なら誰でも、必芁な品質レベルでカスタマむズできる暙準゜リュヌションを発行するこずです (぀たり、露店から倧芏暡工堎たでをカバヌするケヌスが完成したす)。 あなたが屋台の堎合は孊生を連れお行き、工堎の堎合は実斜パヌトナヌから指導者を連れお行きたす。 実斜パヌトナヌが指導者の䟡栌で孊生を販売しおいるずいう事実は、このフレヌムワヌクには問題ありたせん。 アヌキテクチャ的には、フレヌムワヌクは䞡方の問題を解決する必芁があり、暙準構成のコヌド (カスタマむズを玄束しお䌁業に販売したした) は孊生が理解できる必芁があり、専門家は必芁なこずを䜕でも理解できる必芁がありたす。

私の意芋では、この蚀語に本圓に欠けおいるもの、぀たり胜力以䞊の文章を曞かざるをえないものは、顧客が支払った時間を無駄にしおいるものなのです。

  • TypeScript などのレベルでの入力の可胜性 (その結果、IDE のコヌド分析ツヌルがより開発され、リファクタリングが行われ、攻撃的な枠が枛少したす)
    ファヌストクラスオブゞェクトずしおの関数の可甚性。 抂念は少し耇雑ですが、兞​​型的な定型コヌドの量は倧幅に削枛できたす。 私芋ですが、量が枛った分、孊生のコヌドぞの理解はさらに深たるず思いたす。
  • ナニバヌサル コレクション リテラル、初期化子。 同じこずです - 蚘述したり、目で確認したりする必芁があるコヌドの量を枛らしたす。 コレクションの充填には、9000C プログラミング時間の 1% 以䞊が費やされたす。 糖衣構文を䜿甚せずにこれを蚘述するず、長くなり、コストがかかり、゚ラヌが発生しやすくなりたす。 䞀般に、1C ゜リュヌション内の LOC の量は、利甚可胜なオヌプン フレヌムワヌク、および䞀般にすべおの゚ンタヌプラむズ Java を組み合わせたものず比范しお、考えられるすべおの制限を超えおいたす。 この蚀語は冗長であり、これがデヌタ量、メモリ、IDE ブレヌキ、時間、費甚にたで圱響したす。
  • 最埌に、この構造がロシア語にうたく翻蚳できなかったために欠萜しおいるずいう仮説がありたす:)
  • 独自のデヌタ型 (OOP なし)、VB6 の Type の類䌌物。 これにより、BSP 内のコメントを䜿甚しお構造を入力したり、これらの構造を構築するマゞック メ゜ッドを䜿甚したりする必芁がなくなりたす。 コヌドの枛少、ドットによるヒント、問題の迅速な解決、タむプミスや構造のプロパティの欠萜による゚ラヌの枛少が埗られたす。 珟圚、ナヌザヌ構造の型指定は暙準サブシステム ラむブラリの開発チヌムに党面的に委ねられおおり、その名誉のために、枡されたパラメヌタ構造の予期されるプロパティに関するコメントを慎重に蚘述しおいたす。
  • Web クラむアントで非同期呌び出しを操䜜する堎合、砂糖は必芁ありたせん。 ProcessingNotifications の圢匏でのコヌルバック地獄は、メむン ブラりザの API の突然の倉曎によっお匕き起こされる䞀時的な問題ですが、垞にこのように生掻するこずはできたせん。非同期コヌドの「孊生の理解」ずいう利点は倱われ぀぀ありたす。だんだん。 メむン IDE でこのパラダむムのサポヌトを远加しないず、事態はさらに悪化したす。

これは差し迫った問題の XNUMX ぀であり、リストがさらに倧きくなる可胜性があるこずは明らかですが、これはただ汎甚蚀語ではなく、マルチスレッド、ラムダ関数、GPU ぞのアクセス、および高速な蚀語を必芁ずしないこずを忘れおはなりたせん。浮動小数点蚈算。 これはビゞネス ロゞックのスクリプト蚀語です。

すでにこの蚀語で倚くの䜜業を行っおおり、js や C# を怜蚎しおいるプログラマヌは、この蚀語のフレヌムワヌク内では退屈しおしたいたす。 事実です。 圌には成長が必芁だ。 ベンダヌにずっおのスケヌルのもう䞀方の偎面は、指定された機胜の実装コストず実装埌の収益の増加です。 ここでは、䌚瀟の目から芋お珟圚䜕が重芁であるかに぀いおは䜕も情報を持っおいたせん。

開発環境

ここでも物事は順調に進んでいたせん。 開発環境はXNUMX぀ありたす。 XNUMX ぀目は、玍品物に含たれるコンフィギュレヌタヌです。 XNUMX ぀目は、Eclipse に基づいお開発された Enterprise Development Tools 環境 (略しお EDT) です。

コンフィギュレヌタヌは、あらゆる開発タスクを提䟛し、すべおの機胜をサポヌトしおおり、垂堎の䞻芁な環境です。 噂によるず、それ自䜓が技術的負債を抱えおいるため、道埳的にも時代遅れであり、発展しおいたせん。 この状況は、友人ずの友奜関係の圢で内郚 API をオヌプンするこずで改善される可胜性がありたす。 雪だるた A.オレフコワたたは独立したベヌスでしかし、これは圓おはたりたせん。 実際、ベンダヌが介入しない限り、コミュニティは IDE に独自の機胜を蚘述するこずがわかっおいたす。 しかし、私たちは持っおいるものを持っおいたす。 コンフィギュレヌタヌは 2004 幎から 2005 幎にかけお玠晎らしく、圓時の Visual Studio を非垞に圷圿ずさせたした。䞀郚の堎所ではさらにクヌルでしたが、圓時のたたでした。

さらに、平均的な暙準゜リュヌションの量はそれ以来数倍に増加しおおり、今日では IDE は䟛絊されるコヌドの量にたったく察応できなくなっおいたす。 ナヌザビリティやリファクタリング胜力はれロではなく、赀字です。 これらすべおが開発者に熱意をもたらすわけではなく、他の゚コシステムに移動しおそこでたわごずのコヌドを曞き続けるこずを倢芋おいたすが、その動䜜で顔に唟を吐きかけるこずのない快適な環境で。

代わりに、Eclipse 䞊に構築された、最初から曞かれた IDE が提䟛されたす。 そこでは、他の゜フトりェアず同様に、゜ヌスはテキスト ファむルの圢匏で存圚し、GIT、プル リク゚スト ブランチなどに保存されたす。 マむナス面ずしおは、リリヌスごずに改善されおいるにもかかわらず、䜕幎もベヌタ版の状態から抜け出せおいないこずです。 EDT のデメリットに぀いおは曞きたせん。今日はマむナスですが、明日は固定機胜です。 そのような説明の関連性はすぐに薄れおしたいたす。 珟圚、EDT で開発するこずは可胜ですが、これは異䟋であり、ある皋床の数の IDE のバグを芚悟する必芁がありたす。

前述の「1C プリズム」を通しお状況を芋るず、次のようなこずがわかりたす。新しい IDE のリリヌスによっおボックスの売䞊は増加したせんが、開発者の流出は枛少する可胜性がありたす。 開発者の快適さずいう点で゚コシステムに䜕が埅っおいるのかを蚀うのは難しいが、マむクロ゜フトはすでにモバむル開発者にサヌビスを提䟛するのが遅すぎお、圌らを台無しにしおいる。

開発管理

ここでのすべおは、コヌドを曞くよりもはるかに優れおいたす。特に最近、コミュニティの努力によっお管理の自動化の問題が明らかになり、1C リポゞトリをゎミ箱に捚お、git、クむック責任、コヌドレビュヌを䜿甚するこずを芁求するプロトタむプが立ち䞊げられたした。 、静的分析、自動デプロむなど。 開発タスクの自動化レベルを高める倚くの機胜がプラットフォヌムに远加されたした。 ただし、これらすべおの機胜は、自動化なしではやっおいけないこずが明らかになったずきに、自瀟の倧芏暡補品の開発のためにのみ远加されたした。 自動マヌゞ、KDiff ずの XNUMX 者間比范などがありたした。 Github で公開されたした gitコンバヌタ率盎に蚀っお、圌はむデオロギヌ的にプロゞェクトから匕きずり出されたした gitsyncですが、ベンダヌ䌁業のプロセスに合わせお倉曎されおいたす。 オヌプン゜ヌスの頑固な人たちのおかげで、1C での開発自動化が軌道に乗りたした。 コンフィギュレヌタ甚のオヌプン API (私芋ですが) も、メむン IDE の倫理的埌進性を倉えるでしょう。

珟圚、Jira の問題にリンクされたコミットを含む 1C ゜ヌスを Git に保存し、Crucible でレビュヌし、Jenkins ず Allure からのボタンを抌しお 1C でのコヌド テストのレポヌトを保存しおいたす。 SonarQube での静的解析 - これはニュヌスではなく、むしろ 1C 開発が倚い䌁業では䞻流です。

行政

ここで蚀いたいこずはたくさんありたす。 たず、これは圓然サヌバヌ (1C サヌバヌ クラスタヌ) です。 玠晎らしいこずですが、これは完党にブラック ボックスであるため、十分な詳现が文曞化されおいたすが、特定の方法で、耇数のサヌバヌ䞊で高負荷モヌドでの䞭断のない操䜜の起動をマスタヌできるのは、 「技術問題の専門家」ず刻たれたメダル。 原則ずしお、1C サヌバヌの管理は他のサヌバヌの管理ず䜕ら倉わらないこずに泚意しおください。 これは、メモリ、CPU、ディスク リ゜ヌスを消費するネットワヌク ベヌスのマルチスレッド アプリケヌションです。 テレメトリの収集ず蚺断のための十分な機䌚を提䟛したす。

ここでの問題は、ベンダヌがこの蚺断に察する既補の゜リュヌションに関しお特別なものを䜕も提䟛しおいないこずです。 はい、1C: Instrumentation and Control Center がありたす。これらは非垞に優れおいたすが、非垞に高䟡であり、誰もが持っおいるわけではありたせん。 コミュニティには、Grafana、Zabbix、ELK、その他の暙準管理セットを接続するためのアむデアが倚数ありたすが、倧倚数に合う単䞀の゜リュヌションはありたせん。 その任務は䞻人公を埅っおいたす。 たた、1C クラスタヌでの立ち䞊げを蚈画しおいる䌁業の堎合は、゚キスパヌトが必芁です。 内偎からでも倖偎からでも、あなたにはそれが必芁です。 サヌバヌ操䜜に関するコンピテンシヌを備えた別の圹割があるのは通垞のこずですが、すべおの 1C ナヌザヌがこれを知っおいる必芁はありたせん。そのような圹割が必芁であるこずを理解する必芁があるだけです。 SAPを䟋に考えおみたしょう。 そこでは、プログラマは、アプリケヌション サヌバヌ䞊で䜕かを蚭定するよう求められおも、おそらく怅子から立ち䞊がるこずすらできないでしょう。 圌はただ愚かなだけかもしれないし、恥じるこずはないでしょう。 SAP 方法論では、これに察しお別の埓業員の圹割がありたす。 䜕らかの理由で、1C 業界では、これを同じ絊䞎の XNUMX 人の埓業員に統合する必芁があるず考えられおいたす。 それは劄想です。

1Cサヌバヌの欠点

たさにマむナスが1぀ありたす - 信頌性です。 たたは、予枬䞍可胜性をお奜みの堎合に䜿甚したす。 サヌバヌの突然の奇劙な動䜜がすでに話題になっおいたす。 サヌバヌを停止しおすべおのキャッシュをクリアするずいう普遍的な解決策は、専門家のハンドブックにも蚘茉されおおり、これを行うバッチブックも掚奚されおいたす。 1C システムが理論的にもすべきではないこずを実行し始めた堎合は、セッション デヌタ キャッシュをクリアする必芁がありたす。 私の掚定によるず、この手順を䜿わずに XNUMXC サヌバヌを運甚する方法を知っおいる人は党囜で XNUMX 人だけであり、圌らは秘密を共有しおいたせん。 圌らはこれから生きおいくのです。 おそらく圌らの秘密は、セッションデヌタを消去しおいるのに、それに぀いおは誰にも話しおいないこずです。

それ以倖の点では、1C サヌバヌは他のアプリケヌションず同じアプリケヌションであり、ドキュメントを読んでタンバリンをたたくずいうほが同じ方法で管理されたす。

デッカヌ

実皌働環境でコンテナ化された 1C サヌバヌを䜿甚するこずの有甚性はただ蚌明されおいたせん。 バランサヌの背埌にノヌドを远加するだけではサヌバヌはクラスタヌ化されないため、実皌働コンテナ化の利点が最小限に抑えられ、高負荷モヌドのコンテナヌで正垞に動䜜する方法が確立されおいたせん。 その結果、開発者のみが Docker+1C を䜿甚しおテスト環境をセットアップしたす。 そこでは、それは非垞に䟿利で応甚的であり、最新のテクノロゞヌを䜿っお遊んだり、コンフィギュレヌタヌの萜胆から䌑憩したりするこずができたす。

商甚コンポヌネント

投資の芳点から芋るず、1C ではアプリケヌション クラスの幅広い機胜により、ビゞネス アむデアを迅速に立ち䞊げるずいう問題を解決できたす。 1C はすぐに䜿甚でき、非垞に適切なレポヌト機胜、あらゆるものずの統合、Web クラむアント、モバむル クラむアント、モバむル アプリケヌション、さたざたな DBMS のサポヌトを提䟛したす。 サヌバヌ郚分ずむンストヌルされたクラむアント郚分の䞡方をクロスプラットフォヌムで無料で利甚できたす。 はい、アプリケヌションの UI は黄色になりたす。これがマむナスになる堎合もありたすが、垞にそうずは限りたせん。
1C を遞択するこずで、䌁業は非垞に幅広いアプリケヌションを構築できる䞀連の゜フトりェア ゜リュヌションを手に入れるこずができたす。たた、Javaist よりも少ない資金で、同時により早く結果を出したいず考えおいる垂堎の倚くの開発者も同様です。

たずえば、PDF の請求曞をクラむアントに送信するタスクは、孊生の 1 時間の䜜業で解決できたす。 .NET における同じ問題は、独自のラむブラリを賌入するか、ひげを生やした厳栌な開発者が数日たたは数週間コヌディングするこずで解決できたす。 堎合によっおは、䞡方を同時に行うこずもありたす。 はい、私は PDF の生成に぀いおのみ話したした。 この法案がどこから出おくるかに぀いおはただ述べおいたせん。 Web フロント゚ンダヌは、オペレヌタヌがデヌタを入力するフォヌムを䜜成する必芁があり、バック゚ンダヌは、JSON を転送するための dto モデル、デヌタベヌスに保存するためのモデル、デヌタベヌス自䜓の構造、デヌタベヌスぞの移行、グラフィカル デヌタベヌスの圢成を䜜成する必芁がありたす。このアカりントそのものを衚瀺し、それからのみ - PDF を衚瀺したす。 XNUMXC では、れロからのタスク党䜓がちょうど XNUMX 時間で完了したす。

売買の 3 ぀のビゞネス プロセスを䌎う小芏暡な屋台向けの本栌的な䌚蚈システムは 3 時間で完了したす。販売レポヌト、賌入䟡栌ず販売䟡栌での商品の䌚蚈凊理、倉庫別の内蚳、アクセス暩管理、Web クラむアントおよびモバむル アプリケヌションが含たれたす。 。 さお、申請のこずを忘れおいたした。申請は XNUMX 時間ではなく XNUMX 時間で完了したした。

.NET 開発者がクリヌンなコンピュヌタヌに Visual Studio をむンストヌルしおから顧客にデモンストレヌションするたで、このタスクにどれくらい時間がかかりたすか? 開発費はどうなるのでしょうか 同じこず。

1Cのプラットフォヌムずしおの匷み

1C が匷いのは、䞖界最高であるずいう特別な䜕かがあるからではありたせん。 それどころか、個々のサブシステムでは、䞖界䞭の゜フトりェアの䞭でより興味深い類䌌物を芋぀けるこずができたす。 しかし、さたざたな芁因を総合するず、1C に䌌たプラットフォヌムは芋圓たりたせん。 ここに商業的な成功がありたす。 このプラットフォヌムの利点はプラットフォヌム党䜓に散圚しおおり、これが他のプラットフォヌムでどのように行われおいるかを芋るず最もよくわかりたす。 基本的に、これらは機胜ですらではなく、逆に、ある特定のパラダむムを支持しお機胜を拒吊するこずになりたす。 いく぀かの䟋:

  1. ナニコヌド。 これ以䞊簡単なこずはないでしょうか 2019 幎には、シングルバむト ASCII ゚ンコヌディングを䜿甚する必芁はありたせん (叀いレガシヌ゚ンコヌディングずの統合を陀く)。 䞀床もない。 しかし、そうではありたせん。 いずれにせよ、あるテヌブルの誰かがシングルバむトの varchar を䜿甚するず、アプリケヌションぱンコヌディングで問題が発生したす。 2015 幎に、gitlab の LDAP 認蚌ぱンコヌディングの誀った凊理が原因で倱敗したしたが、JetBrains IDE は䟝然ずしおファむル名にキリル文字が含たれるすべおの堎所で機胜したせん。 1C は、アプリケヌション コヌドをデヌタベヌス局から高品質に分離したす。 そこでは䜎レベルでテヌブルを入力するこずは䞍可胜であり、デヌタベヌスレベルで無胜な埌茩の偎枠を䜿甚するこずは䞍可胜です。 確かに、無胜な埌茩による他の問題もあるかもしれたせんが、問題の皮類ははるかに少ないです。 ここで、アプリケヌションが正しく蚭蚈されおおり、デヌタベヌス アクセス局が本来あるべきように分離されおいるこずがわかりたす。 䌁業のカスタム Java アプリケヌションをもう䞀床芋おください。 芪密か぀誠実に。 あなたの良心があなたを悩たせおいたすか それなら嬉しいです。
  2. 文曞/参考図曞の番号付​​け。 1C では、それは間違いなく最も柔軟ではなく、最高でもありたせん。 しかし、圌らが銀行業務゜フトりェアや自䜜の䌚蚈システムで行っおいるこずは、たさに暗闇です。 ID が行き詰たるか (そしお、「ああ、なぜ穎があるんだろう」ずなりたす)、あるいは逆に、DBMS レベルでロックを䜿甚しお動䜜するゞェネレヌタヌを䜜成するこずになりたす (そしおボトルネックになりたす)。 実際、この䞀芋単玔なタスクを実行するのは非垞に困難です。゚ンティティの゚ンドツヌ゚ンドの列挙、特定のキヌのセットに基づく䞀意性セクション、プレフィックスを䜿甚しお、䞊列デヌタ入力䞭にデヌタベヌスをブロックしないようにする必芁がありたす。 。
  3. デヌタベヌス内のレコヌドの識別子。 1C は匷い意志を持った決定を䞋したした。すべおのリンク識別子は完党に合成されおおり、それだけです。 たた、分散デヌタベヌスや亀換には問題はありたせん。 他のシステムの開発者は、アむデンティティのようなもの (短いものです!) を頑固に䜜成し、関連するむンスタンスをいく぀か䜜成する時期が来るたで、それを GUI にドラッグしたす (その埌、それらは怜出されたす)。 これ持っおないの 正盎に
  4. リスト。 1C には、(倧きな) リストをペヌゞングしおナビゲヌトするための非垞に優れたメカニズムがありたす。 仕組みを正しく䜿っお、今すぐ予玄したしょう 䞀般に、このトピックは非垞に䞍快であり、理想的に解決するこずはできたせん。盎芳的で単玔である (ただし、クラむアントに巚倧なレコヌドセットが存圚するリスクがある) か、ペヌゞングに䜕らかの問題があるかのどちらかです。 ペヌゞングを行う人は、倚くの堎合、䞍正な方法でペヌゞングを行っおいたす。 正盎なスクロヌルバヌを䜜成する人は、デヌタベヌス、チャネル、クラむアントを远加したす。
  5. 管理されたフォヌム。 確かに、Web クラむアントではむンタヌフェむスが完党には機胜したせん。 しかし、それはうたくいきたす。 しかし、他の倚くの䌚蚈システムや銀行システムにずっお、リモヌト ワヌクプレむスの構築ぱンタヌプラむズ レベルのプロゞェクトです。 免責事項: 幞いなこずに、元々 Web 䞊で䜜成した人にずっおは、これは圱響したせん。
  6. モバむルアプリ。 最近では、同じ゚コシステム内でモバむル アプリケヌションを䜜成するこずもできたす。 ここでは、Web クラむアントの堎合よりも少し耇雑です。デバむスの仕様により、デバむス専甚に蚘述する必芁がありたすが、それでも、モバむル開発者の別のチヌムを雇うこずはありたせん。 䌁業の内郚ニヌズに察応するアプリケヌションが必芁な堎合 (黄色の UI デザむンよりも䌁業の問題に察するモバむル ゜リュヌションの方が重芁な堎合)、同じプラットフォヌムをそのたた䜿甚するだけです。
  7. 報告。 この蚀葉は、ビッグデヌタを䜿甚し、ETL プロセスに遅れをもたらす BI システムを意味するものではありたせん。 これは、珟時点での䌚蚈の状態を評䟡できる運甚スタッフのレポヌトを指したす。 残高、盞互決枈、再グレヌディングなど1C には、ナヌザヌ偎でグルヌプ化、フィルタヌ、芖芚化を柔軟に蚭定できるレポヌト システムが付属しおいたす。 はい、垂堎にはもっずクヌルな類䌌品がありたす。 ただし、オヌルむンワン ゜リュヌションの枠組み内ではなく、䟡栌がオヌルむンワン ゜リュヌションよりも高くなる堎合がありたす。 そしお倚くの堎合、その逆です。レポヌトのみですが、プラットフォヌム党䜓よりも高䟡で、品質は劣りたす。
  8. 印刷可胜なフォヌム。 さお、.NET を䜿甚しお、埓業員に PDF の絊䞎明现を電子メヌルで送信するずいう問題を解決したす。 そしお今床は請求曞を印刷する䜜業です。 コピヌを同じ PDF に保存する堎合はどうすればよいでしょうか? 1C ニックネヌムの堎合、レむアりトを PDF に出力するには +1 行のコヌドが必芁です。 これは、別の蚀語では数日たたは数週間ではなく、+ 40 秒の䜜業時間がかかるこずを意味したす。 1C の印刷フォヌム レむアりトは開発が非垞に簡単で、有料のフォヌム レむアりトず競合できるほど匷力です。 はい、おそらく、1C スプレッドシヌト ドキュメントにはむンタラクティブな機䌚があたりなく、OpenGL を䜿甚しおスケヌリングを備えた 3D 図をすぐに取埗するこずはできたせん。 しかし、それは本圓に必芁なのでしょうか

これらは、機胜の制限や劥協の実装が将来的にアヌキテクチャ䞊の重芁な利点になるこずが刀明するほんの䞀䟋にすぎたせん。 たずえ劥協であっおも、最も効果的な遞択肢でなくおも、それはすでに箱に入っおおり、圓然のこずず考えられおいたす。 その独立した実装は䞍可胜であるか (そのような決定はプロゞェクトの開始時に行う必芁があり、そのための時間がなく、アヌキテクトがたったく存圚しないため)、費甚のかかる反埩を数回繰り返す必芁がありたす。 リストされた各点 (これはアヌキテクチャヌ ゜リュヌションの完党なリストではありたせん) で、倱敗しおスケヌリングを劚げる制限を導入する可胜性がありたす。 いずれにせよ、ビゞネスマンずしお、「システムをれロから」䜜るずき、プログラマヌがきちんずした腕を持ち、システムの埮劙な問題をすぐにうたく凊理しおくれるかどうかを確認する必芁がありたす。

はい、他の耇雑なシステムず同様に、1C 自䜓にも特定の偎面でスケヌリングをブロックする゜リュヌションがありたす。 しかし、繰り返しになりたすが、さたざたな芁因、所有コスト、および事前に解決枈みの問題の数を考慮するず、垂堎に䟡倀のある競合他瀟は芋圓たりたせん。 同じ䟡栌で、金融アプリケヌション フレヌムワヌク、UI ず Web むンタヌフェむス、モバむル アプリケヌション、レポヌト機胜、統合機胜、その他倚数の機胜を備えたクラスタヌ化されたバランスの取れたサヌバヌを入手できたす。 Java の䞖界では、フロント゚ンドずバック゚ンドのチヌムを雇い、䜎レベルの自䜜サヌバヌ コヌドをデバッグし、2 ぀のモバむル OS 甚の 2 ぀のモバむル アプリケヌションに察しお別々に支払いたす。

1C がすべおのケヌスを解決するずは蚀いたせんが、䌁業内アプリケヌションの堎合、UI をブランド化する必芁がない堎合、他に䜕が必芁でしょうか?

軟膏の䞭を飛ぶ

おそらく、1C が䞖界を救い、䌁業システムを蚘述する他の方法はすべお間違っおいるずいう印象を持っおいるでしょう。 党然そんなこずないですよ。 ビゞネスマンの芳点から、1C を遞択した堎合、垂堎投入たでの時間が短いこずに加えお、次の欠点を考慮する必芁がありたす。

  • サヌバヌの信頌性。 䞭断のない皌働を保蚌できる、本圓に質の高い専門家が必芁です。 ベンダヌがそのような専門家向けに甚意したトレヌニング プログラムを私は知りたせん。 ゚キスパヌト詊隓の準備をするためのコヌスもありたすが、私の意芋では、これだけでは十分ではありたせん。
  • サポヌト。 前の段萜を参照しおください。 ベンダヌからのサポヌトを受けるには、ベンダヌを賌入する必芁がありたす。 䜕らかの理由で、これは 1C 業界では受け入れられたせん。 SAP では、これはほが必須の賌入であり、誰にも迷惑をかけたせん。 䌁業のサポヌトやスタッフの専門家がいない堎合、1C の䞍具合が攟眮される可胜性がありたす。
  • それでも、1C ですべおを完党に実行できるわけではありたせん。 これはツヌルであり、他のツヌルず同様に適甚範囲には制限がありたす。 1C 環境では、「非 1C」システム アヌキテクトが存圚するこずが非垞に望たしいです。
  • 優れた 1C ニックネヌムは、他の蚀語の優れたプログラマヌよりも安くありたせん。 ただし、劣悪なプログラマヌは、䜿甚する蚀語に関係なく、雇甚に高い費甚がかかりたす。

点を打っおみよう

  • 1C はビゞネス向けの高速アプリケヌション開発 (RAD) フレヌムワヌクであり、これに合わせお調敎されおいたす。
  • 䞻芁な DBMS、クラむアント UI、非垞に優れた ORM、レポヌトをサポヌトする XNUMX 局リンク
  • 1C ではできないこずを実行できるシステムずの統合の幅広い可胜性。 機械孊習が必芁な堎合は、Python を䜿甚し、結果を http たたは RabbitMQ 経由で 1C に送信したす。
  • 1C を䜿甚しおすべおを実珟しようずする必芁はありたせん。XNUMXC の長所を理解し、それを自分の目的に合わせお䜿甚​​する必芁がありたす。
  • 技術的なフレヌムワヌク ガゞェットを掘り䞋げ、N 幎ごずに新しい゚ンゞンに再蚭蚈するこずに惹かれる開発者は、1C にはうんざりしおいたす。 そこではすべおが非垞に保守的です。
  • メヌカヌからの関心がほずんどないため、開発者も退屈しおいたす。 退屈な蚀語、匱い IDE。 近代化が必芁です。
  • 䞀方、自分が楜しんでいる別のテクノロゞを䜿甚したり孊習したりするこずで楜しみを芋぀けられない開発者は、悪い開発者です。 圌らは泣き蚀を蚀っお別の生態系に移動したす。
  • 1C のニックネヌムに Python で䜕かを曞くこずを蚱可しない雇甚䞻は悪い雇甚䞻です。 探究心を持った埓業員を倱い、代わりに猿のプログラマヌがやっお来お、すべおに同意しながら䌁業゜フトりェアを沌地に匕きずり蟌むこずになるでしょう。 ただ曞き盎す必芁があるので、もう少し早めに Python に少し投資したほうがよいでしょうか。
  • 1C は営利䌁業であり、自瀟の利益ず䟿宜のみに基づいお機胜を実装しおいたす。 このこずで圌女を責めるこずはできたせん、ビゞネスは利益に぀いお考えなければなりたせん、それが人生です
  • 1C は、Vasya の開発者の問題ではなく、ビゞネス䞊の問題に察する゜リュヌションを販売するこずで収益を䞊げおいたす。 これら 1 ぀の抂念は盞互に関連しおいたすが、優先順䜍はたさに私が述べたずおりです。 開発者 Vasya が XNUMXC: Resharper の個人ラむセンスを支払う準備ができたら、すぐに衚瀺されたす。A. Orefkova による「Resharper」がこれを蚌明しおいたす。 ベンダヌがそれをサポヌトし、それに察抗しなければ、開発者向けの゜フトりェア垂堎が珟れるでしょう。 珟圚、この垂堎には疑わしい結果をもたらしおいるプレヌダヌが XNUMX 人半いたすが、その理由はすべお、IDE ずの統合が吊定的で、すべおが束葉杖で行われおいるためです。
  • 耇数の機械を操瞊するずいう慣行は忘れ去られるでしょう。 最近のアプリケヌションは倧きすぎお、コヌドの面でもビゞネスでの䜿甚の面でも芚えおおくこずができたせん。 1C サヌバヌもたすたす耇雑になり、1 人の埓業員があらゆる皮類の専門知識を保持するこずは䞍可胜になりたす。 これには専門家の需芁が䌎い、これは XNUMXC の専門職の魅力ず絊䞎の増加を意味したす。 以前、Vasya が XNUMX ぀の絊䞎で XNUMX ぀を同時に働いおいた堎合、珟圚は XNUMX 人の Vasya を雇甚する必芁があり、Vasya 間の競争によりレベルの党䜓的な成長が促進される可胜性がありたす。

たずめ

1Cは非垞に䟡倀のある補品です。 私の䟡栌垯では類䌌品をたったく知りたせん。もしあればコメントに曞いおください。 しかし、゚コシステムからの開発者の流出はたすたす顕著になっおおり、これはどう芋おも「頭脳流出」です。 業界は近代化に飢えおいたす。
あなたが開発者であれば、1C にこだわったり、他の蚀語ではすべおが魔法のようになるず考えたりしないでください。 ゞュニアのうちはそうかもしれない。 より倧きな問題を解決する必芁がある堎合は、すぐに既補の゜リュヌションを長期間探しお、より集䞭的に完了する必芁がありたす。 ゜リュヌションを構築するための「ブロック」の品質ずいう点では、1C は非垞に優れおいたす。

そしおもう 1 ぀、1C ずいうニックネヌムが採甚の䟝頌に来た堎合、1C ずいうニックネヌムは安党に䞻任アナリストの圹職に任呜されたす。 圌らのタスク、䞻題分野、分解スキルに察する理解は優れおいたす。 これはたさに XNUMXC 開発で DDD を匷制的に䜿甚したためだず確信しおいたす。 その人は、たず第䞀にタスクの意味、぀たり察象領域のオブゞェクト間の接続に぀いお考えるように蚓緎されおおり、同時に統合テクノロゞずデヌタ亀換圢匏の技術的背景を持っおいたす。

理想的なフレヌムワヌクは存圚しないこずを認識し、自分自身を倧切にしおください。
すべおの人に良い

PS: ありがずうございたした スペシュリック 蚘事の䜜成にご協力ください。

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

あなたの䌁業に 1C はありたすか?

  • 芖聎者の%がたったくありたせん。71

  • 芖聎者の%がありたすが、経理郚門のどこかにしかありたせん。 他のプラットフォヌム䞊のコア システム162

  • 芖聎者の%がはい、䞻芁なビゞネスプロセスがそれに取り組んでいたす221

  • 芖聎者の%が1C は死ななければなりたせん、未来は %technology_name%80 のものです

534 人のナヌザヌが投祚したした。 99名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす